]> git.ipfire.org Git - thirdparty/git.git/commit - Makefile
rebase: start implementing it as a builtin
authorPratik Karki <predatoramigo@gmail.com>
Mon, 6 Aug 2018 19:31:09 +0000 (01:16 +0545)
committerJunio C Hamano <gitster@pobox.com>
Mon, 6 Aug 2018 20:08:01 +0000 (13:08 -0700)
commit55071ea248ef8040e4b29575376273e4dd061683
tree3eec9ea6ce3c2a3e237a6ba8fc330c2cec217536
parent1d89318c48d233d52f1db230cf622935ac3c69fa
rebase: start implementing it as a builtin

This commit imitates the strategy that was used to convert the
difftool to a builtin. We start by renaming the shell script
`git-rebase.sh` to `git-legacy-rebase.sh` and introduce a
`builtin/rebase.c` that simply executes the shell script version,
unless the config setting `rebase.useBuiltin` is set to `true`.

The motivation behind this is to rewrite all the functionality of the
shell script version in the aforementioned `rebase.c`, one by one and
be able to conveniently test new features by configuring
`rebase.useBuiltin`.

In the original difftool conversion, if sane_execvp() that attempts to
run the legacy scripted version returned with non-negative status, the
command silently exited without doing anything with success, but
sane_execvp() should not return with non-negative status in the first
place, so we use die() to notice such an abnormal case.

We intentionally avoid reading the config directly to avoid
messing up the GIT_* environment variables when we need to fall back to
exec()ing the shell script. The test of builtin rebase can be done by
`git -c rebase.useBuiltin=true rebase ...`

Signed-off-by: Pratik Karki <predatoramigo@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
.gitignore
Makefile
builtin.h
builtin/rebase.c [new file with mode: 0644]
git-legacy-rebase.sh [moved from git-rebase.sh with 100% similarity]
git.c