From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Jakub Narebski <jnareb@gmail.com>
Cc: Shourya Shukla <shouryashukla.oo@gmail.com>,
christian.couder@gmail.com, t.gummerer@gmail.com,
git@vger.kernel.org, gitster@pobox.com
Subject: Converting scripted commands to built-ins, was Re: [GSoC] Exploring Previous year Projects
Date: Thu, 30 Jan 2020 12:10:06 +0100 (CET) [thread overview]
Message-ID: <nycvar.QRO.7.76.6.2001301154170.46@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <86k15ars55.fsf@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3586 bytes --]
Hi Kuba,
On Wed, 29 Jan 2020, Jakub Narebski wrote:
> Shourya Shukla <shouryashukla.oo@gmail.com> writes:
>
> > Hello,
> >
> > I was looking at the previous year projects[1] and a project intrigued me, namely:
> > "Convert scripts to builtins".
> >
> > Following from Christian's advice[2], I have decided to focus on my project proposal.
> > I noticed that various commands such as "git bisect", "git web--browse"(it particularly
> > interests me) are still in their "shell" form and will be needed to be converted into
> > their "C" form as per the project description.
> [...]
> > [1]: https://git.github.io/SoC-2019-Ideas/
> > [2]: https://lore.kernel.org/git/CAP8UFD2Fo=2suQDLwzLM-Wg3ZzXpqHw-x0brPtPV0d4dRsgs9A@mail.gmail.com/
>
> As far as I know, "git bisect" is currently being converted from shell
> to C by Miriam Rubio for Outreachy project [3], so I am not sure if it
> would be feasible as GSoC 2020 project.
Indeed. That one "is already taken".
> I'm not sure if it would be possible and if it would make sense to
> convert "git instaweb" and/or it's helper script "git web--browse" from
> shell to C.
I agree, both of those scripts seem not to benefit all that much from
being converted, while some people would still consider them to be
developed easier as shell scripts.
> I think trying to convert either "git stash" or "git submodule" to C
> would make more sense.
Oh, but `git stash` is already converted. The only two remainining shell
scripts for which I would consider a conversion to C to make sense are
`git submodule` and `git mergetool`.
Large parts of `git submodule` are already implemented in `git
submodule--helper`, so that's a head start (thanks Stephan Beller!).
The `git mergetool` command is a bit trickier, as it consists of three
scripts, really, with the `difftool--helper` depending on
`mergetool--lib`.
Realistically, I think that it would be possible for a GSoC student who is
already very familiar with the code base and with submodules to finish the
conversion of `git submodule` in one season.
The same is probably not true for `git mergetool`: it would require a
couple of seasons to convert, and a good chunk of the first month would be
taken by planning a conversion strategy.
As of the current `master`, the `git-*.sh` scripts are:
# In the process of being converted
git-bisect.sh
# Candidates for being converted
git-difftool--helper.sh
git-mergetool--lib.sh
git-mergetool.sh
git-submodule.sh
# Trivial conversions
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
# Already deprecated
git-filter-branch.sh
git-legacy-stash.sh
git-rebase--preserve-merges.sh
# Is this even needed anymore?
git-quiltimport.sh
# Probably better to leave them as shell scripts
git-instaweb.sh
git-request-pull.sh
git-web--browse.sh
# Not even Git commands
git-parse-remote.sh
git-sh-i18n.sh
git-sh-setup.sh
The situation of the Perl scripts to be converted is much nicer:
# Already in code review
git-add--interactive.perl
# Too complex/too dependent on the Perl packages
git-send-email.perl
git-svn.perl
# Support for legacy SCMs that are less and less used
git-archimport.perl
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
So: after `git add -i`, I think we're done with the conversion of the Perl
scripts. Took long enough ;-)
Ciao,
Dscho
>
> [3]: https://public-inbox.org/git/20200128144026.53128-1-mirucam@gmail.com/t/#u
>
> Best,
> --
> Jakub Narębski
>
next prev parent reply other threads:[~2020-01-30 11:10 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-29 17:12 [GSoC] Exploring Previous year Projects Shourya Shukla
2020-01-29 19:15 ` Jakub Narebski
2020-01-30 11:10 ` Johannes Schindelin [this message]
2020-01-30 15:14 ` Converting scripted commands to built-ins, was " Derrick Stolee
2020-01-31 9:32 ` Johannes Schindelin
2020-01-31 9:57 ` Johannes Schindelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=nycvar.QRO.7.76.6.2001301154170.46@tvgsbejvaqbjf.bet \
--to=johannes.schindelin@gmx.de \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jnareb@gmail.com \
--cc=shouryashukla.oo@gmail.com \
--cc=t.gummerer@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).