After all of these patch series y'all had to review, this is finally the one that switches things over. Please note that it does not (yet) handle the `git rebase -i --root` invocation; I tried to focus on the common case, and I rarely use --root myself. Please note also that --preserve-merges is *not* handled. The way I designed --preserve-merges is totally stupid and idiotic and I do not want to spend any further time on it. You cannot "pick" merges and hope to be able to reorder commits, for example. I may work on porting Git garden shears' way to recreate the branch structure into rebase -i proper at some stage. And please finally note that this pair of patches does not yet yield the full speed improvement that I promised earlier. After these patches, the time is dominated by pre- and post-processing the todo script, at least on Windows, so there is another patch series that ports those bits and pieces into the rebase--helper, too. Changes since v1: - rebased to current master - this required a change in t3404 because I was bullied^Wasked to change some messages (which should not have been conflated with the work I actually wanted to do, but whatevs) Johannes Schindelin (2): Add a builtin helper for interactive rebases rebase -i: use the rebase--helper builtin .gitignore | 1 + Makefile | 1 + builtin.h | 1 + builtin/rebase--helper.c | 40 ++++++++++++++++++++++++++++++++++++++++ git-rebase--interactive.sh | 13 +++++++++++++ git.c | 1 + t/t3404-rebase-interactive.sh | 2 +- 7 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 builtin/rebase--helper.c base-commit: 6e3a7b3398559305c7a239a42e447c21a8f39ff8 Based-On: sequencer-i at https://github.com/dscho/git Fetch-Base-Via: git fetch https://github.com/dscho/git sequencer-i Published-As: https://github.com/dscho/git/releases/tag/rebase--helper-v2 Fetch-It-Via: git fetch https://github.com/dscho/git rebase--helper-v2 Interdiff vs v1: diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index e2f18d11f6..33d392ba11 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh @@ -556,7 +556,7 @@ test_expect_success 'clean error after failed "exec"' ' echo "edited again" > file7 && git add file7 && test_must_fail git rebase --continue 2>error && - test_i18ngrep "You have staged changes in your working tree." error + test_i18ngrep "you have staged changes in your working tree" error ' test_expect_success 'rebase a detached HEAD' ' -- 2.11.1.windows.1