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
   REBASE-m: for merge-based rebases
   REBASE-i: for interactive-based rebases

It's not clear why this distinction was necessary or helpful; when the
prompt was added in commit e75201963f ("Improve bash prompt to detect
various states like an unfinished merge", 2007-09-30), it simply added
these three different types.  Perhaps there was a useful purpose back
then, but there have been some changes:

  * The merge backend was deleted after being implemented on top of the
    interactive backend, causing the prompt for merge-based rebases to
    change from REBASE-m to REBASE-i.
  * The interactive backend is used for multiple different types of
    non-interactive rebases, so the "-i" part of the prompt doesn't
    really mean what it used to.
  * Rebase backends have gained more abilities and have a great deal of
    overlap, sometimes making it hard to distinguish them.
  * Behavioral differences between the backends have also been ironed
    out.
  * We want to change the default backend from am to interactive, which
    means people would get "REBASE-i" by default if we didn't change
    the prompt, and only if they specified --am or --whitespace or -C
    would they get the "REBASE" prompt.
  * In the future, we plan to have "--whitespace", "-C", and even "--am"
    run the interactive backend once it can handle everything the
    am-backend can.

For all these reasons, make the prompt for any type of rebase just be
"REBASE".

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Elijah Newren 2020-02-15 21:36:35 +00:00 committed by Junio C Hamano
parent 52eb738d6b
commit 6d04ce75c4
2 changed files with 5 additions and 9 deletions

View File

@ -429,11 +429,7 @@ __git_ps1 ()
__git_eread "$g/rebase-merge/head-name" b __git_eread "$g/rebase-merge/head-name" b
__git_eread "$g/rebase-merge/msgnum" step __git_eread "$g/rebase-merge/msgnum" step
__git_eread "$g/rebase-merge/end" total __git_eread "$g/rebase-merge/end" total
if [ -f "$g/rebase-merge/interactive" ]; then r="|REBASE"
r="|REBASE-i"
else
r="|REBASE-m"
fi
else else
if [ -d "$g/rebase-apply" ]; then if [ -d "$g/rebase-apply" ]; then
__git_eread "$g/rebase-apply/next" step __git_eread "$g/rebase-apply/next" step

View File

@ -163,7 +163,7 @@ test_expect_success 'prompt - inside bare repository' '
' '
test_expect_success 'prompt - interactive rebase' ' test_expect_success 'prompt - interactive rebase' '
printf " (b1|REBASE-i 2/3)" >expected && printf " (b1|REBASE 2/3)" >expected &&
write_script fake_editor.sh <<-\EOF && write_script fake_editor.sh <<-\EOF &&
echo "exec echo" >"$1" echo "exec echo" >"$1"
echo "edit $(git log -1 --format="%h")" >>"$1" echo "edit $(git log -1 --format="%h")" >>"$1"
@ -180,7 +180,7 @@ test_expect_success 'prompt - interactive rebase' '
' '
test_expect_success 'prompt - rebase merge' ' test_expect_success 'prompt - rebase merge' '
printf " (b2|REBASE-i 1/3)" >expected && printf " (b2|REBASE 1/3)" >expected &&
git checkout b2 && git checkout b2 &&
test_when_finished "git checkout master" && test_when_finished "git checkout master" &&
test_must_fail git rebase --merge b1 b2 && test_must_fail git rebase --merge b1 b2 &&
@ -189,11 +189,11 @@ test_expect_success 'prompt - rebase merge' '
test_cmp expected "$actual" test_cmp expected "$actual"
' '
test_expect_success 'prompt - rebase' ' test_expect_success 'prompt - rebase am' '
printf " (b2|REBASE 1/3)" >expected && printf " (b2|REBASE 1/3)" >expected &&
git checkout b2 && git checkout b2 &&
test_when_finished "git checkout master" && test_when_finished "git checkout master" &&
test_must_fail git rebase b1 b2 && test_must_fail git rebase --am b1 b2 &&
test_when_finished "git rebase --abort" && test_when_finished "git rebase --abort" &&
__git_ps1 >"$actual" && __git_ps1 >"$actual" &&
test_cmp expected "$actual" test_cmp expected "$actual"