[PATCH v3 00/15] rebase: make the default backend configurable
- From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Dec 24, 2019, 19:54 UTC
- Message-ID
- <pull.679.v3.git.git.1577217299.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.679.v2.git.git.1577126999.gitgitgadget@gmail.com>
This series does a lot of work around making the default rebase backend configurable, and switching the default from the am backend to the merge/interactive one.
See the cover letter for v1[*] for a more detailed motivation for the series, the type of changes being made, and areas I'd like to reviewers to focus on.
Changes since v2:
* Tweaked patch 11 (commit message, and condensing if-else block that was same on both sides), as suggested by Denton
[*] https://lore.kernel.org/git/pull.679.git.git.1576861788.gitgitgadget@gmail.com/
Elijah Newren (15):
rebase: extend the options for handling of empty commits
t3406: simplify an already simple test
rebase, sequencer: remove the broken GIT_QUIET handling
rebase: make sure to pass along the quiet flag to the sequencer
rebase: fix handling of restrict_revision
t3432: make these tests work with either am or merge backends
rebase: allow more types of rebases to fast-forward
git-rebase.txt: add more details about behavioral differences of
backends
rebase: move incompatibility checks between backend options a bit
earlier
rebase: add an --am option
git-prompt: change the prompt for interactive-based rebases
rebase tests: mark tests specific to the am-backend with --am
rebase tests: repeat some tests using the merge backend instead of am
rebase: make the backend configurable via config setting
rebase: change the default backend from "am" to "merge"Documentation/config/rebase.txt | 8 ++ Documentation/git-rebase.txt | 150 ++++++++++++++++---- builtin/rebase.c | 177 +++++++++++++++++++----- contrib/completion/git-prompt.sh | 6 +- rebase-interactive.c | 4 +- rebase-interactive.h | 2 +- sequencer.c | 80 ++++++++--- sequencer.h | 6 +- t/t3400-rebase.sh | 36 ++++- t/t3401-rebase-and-am-rename.sh | 4 +- t/t3404-rebase-interactive.sh | 2 +- t/t3406-rebase-message.sh | 19 ++- t/t3407-rebase-abort.sh | 6 +- t/t3420-rebase-autostash.sh | 2 +- t/t3421-rebase-topology-linear.sh | 4 +- t/t3424-rebase-empty.sh | 89 ++++++++++++ t/t3425-rebase-topology-merges.sh | 8 +- t/t3427-rebase-subtree.sh | 16 ++- t/t3432-rebase-fast-forward.sh | 54 ++++---- t/t3433-rebase-options-compatibility.sh | 13 +- t/t5407-post-rewrite-hook.sh | 12 +- t/t5520-pull.sh | 27 +++- t/t6047-diff3-conflict-markers.sh | 13 +- t/t7512-status-help.sh | 12 +- t/t9106-git-svn-commit-diff-clobber.sh | 3 +- t/t9903-bash-prompt.sh | 8 +- 26 files changed, 576 insertions(+), 185 deletions(-) create mode 100755 t/t3424-rebase-empty.sh
base-commit: 12029dc57db23baef008e77db1909367599210ee Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-679%2Fnewren%2Frebase-fixes-v3 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-679/newren/rebase-fixes-v3 Pull-Request: https://github.com/git/git/pull/679
Range-diff vs v2:
1: 1c2b77e94d = 1: 1c2b77e94d rebase: extend the options for handling of empty commits
2: bd3c5ec155 = 2: bd3c5ec155 t3406: simplify an already simple test
3: 49388b79fd = 3: 49388b79fd rebase, sequencer: remove the broken GIT_QUIET handling
4: 478479358f = 4: 478479358f rebase: make sure to pass along the quiet flag to the sequencer
5: ee26f5a161 = 5: ee26f5a161 rebase: fix handling of restrict_revision
6: 34a69def33 = 6: 34a69def33 t3432: make these tests work with either am or merge backends
7: f2c92853b4 = 7: f2c92853b4 rebase: allow more types of rebases to fast-forward
8: b307340f7c = 8: b307340f7c git-rebase.txt: add more details about behavioral differences of backends
9: 7c3f2e07f3 = 9: 7c3f2e07f3 rebase: move incompatibility checks between backend options a bit earlier
10: 1df11f0b51 = 10: 1df11f0b51 rebase: add an --am option
11: 94b5a3051d ! 11: ff43593211 contrib: change the prompt for interactive-based rebases
@@ -1,6 +1,6 @@
Author: Elijah Newren <newren@gmail.com>
- contrib: change the prompt for interactive-based rebases
+ git-prompt: change the prompt for interactive-based rebases
In the past, we had different prompts for different types of rebases:
REBASE: for am-based rebases
@@ -40,17 +40,18 @@
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@
+ __git_eread "$g/rebase-merge/head-name" b
__git_eread "$g/rebase-merge/msgnum" step
__git_eread "$g/rebase-merge/end" total
- if [ -f "$g/rebase-merge/interactive" ]; then
+- if [ -f "$g/rebase-merge/interactive" ]; then
- r="|REBASE-i"
-+ r="|REBASE"
- else
+- else
- r="|REBASE-m"
-+ r="|REBASE"
- fi
+- fi
++ r="|REBASE"
else
if [ -d "$g/rebase-apply" ]; then
+ __git_eread "$g/rebase-apply/next" step
diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh
--- a/t/t9903-bash-prompt.sh
12: c905d288bf = 12: 99388f24e5 rebase tests: mark tests specific to the am-backend with --am
13: 0287881361 = 13: c2ba6317bf rebase tests: repeat some tests using the merge backend instead of am
14: ec782e711c = 14: 8bec6df51a rebase: make the backend configurable via config setting
15: 7adcbc0bc5 = 15: 044853fd61 rebase: change the default backend from "am" to "merge"-- gitgitgadget