builtin rebase: allow selecting the rebase "backend"
authorPratik Karki <predatoramigo@gmail.com>
Tue, 4 Sep 2018 21:59:49 +0000 (14:59 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 6 Sep 2018 18:56:19 +0000 (11:56 -0700)
commit361badd3933c5c319229896f2ad2d546d95cd8a7
tree537849d53088af6762afaf508ac37340af5ad5dd
parent0eabf4b95ca2d3213194de95cc9cd62593811965
builtin rebase: allow selecting the rebase "backend"

With this commit the builtin rebase supports selecting the "rebase
backends" (or "type") `interactive`, `preserve-merges`, and `merge`.

The `state_dir` was already handled according to the rebase type in a
previous commit.

Note that there is one quirk in the shell script: `--interactive`
followed by `--merge` won't reset the type to "merge" but keeps the type
as "interactive". And as t3418 tests this explicitly, we have to support
it in the builtin rebase, too.

Likewise, `--interactive` followed by `--preserve-merges` makes it an
"explicitly interactive" rebase, i.e. a rebase that should show the todo
list, while `--preserve-merges` alone is not interactive (and t5520
tests for this via `git pull --rebase=preserve`).

Signed-off-by: Pratik Karki <predatoramigo@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rebase.c