]> git.ipfire.org Git - thirdparty/git.git/commitdiff
git-prompt: change the prompt for interactive-based rebases
authorElijah Newren <newren@gmail.com>
Sat, 15 Feb 2020 21:36:35 +0000 (21:36 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sun, 16 Feb 2020 23:40:42 +0000 (15:40 -0800)
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 e75201963f67 ("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>
contrib/completion/git-prompt.sh
t/t9903-bash-prompt.sh

index 1d510cd47bef49d918704a45e9592e0ffcb7ee0f..014cd7c3cfcc99f837b0bd1a3086b2d32272caf0 100644 (file)
@@ -429,11 +429,7 @@ __git_ps1 ()
                __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
-                       r="|REBASE-i"
-               else
-                       r="|REBASE-m"
-               fi
+               r="|REBASE"
        else
                if [ -d "$g/rebase-apply" ]; then
                        __git_eread "$g/rebase-apply/next" step
index 88bc733ad6910ae0a2b11bb5e239f010cb2cdb72..7ca35d358d65c6bf7cc09c91b9644ac77b5d6586 100755 (executable)
@@ -163,7 +163,7 @@ test_expect_success 'prompt - inside bare repository' '
 '
 
 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 &&
                echo "exec echo" >"$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' '
-       printf " (b2|REBASE-i 1/3)" >expected &&
+       printf " (b2|REBASE 1/3)" >expected &&
        git checkout b2 &&
        test_when_finished "git checkout master" &&
        test_must_fail git rebase --merge b1 b2 &&
@@ -189,11 +189,11 @@ test_expect_success 'prompt - rebase merge' '
        test_cmp expected "$actual"
 '
 
-test_expect_success 'prompt - rebase' '
+test_expect_success 'prompt - rebase am' '
        printf " (b2|REBASE 1/3)" >expected &&
        git checkout b2 &&
        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" &&
        __git_ps1 >"$actual" &&
        test_cmp expected "$actual"