diff mbox series

[v2,11/15] contrib: change the prompt for interactive-based rebases

Message ID 94b5a3051d743e8f54c21bc4cd0413f3c0dd05fa.1577127000.git.gitgitgadget@gmail.com (mailing list archive)
State New, archived
Headers show
Series rebase: make the default backend configurable | expand

Commit Message

Linus Arver via GitGitGadget Dec. 23, 2019, 6:49 p.m. UTC
From: Elijah Newren <newren@gmail.com>

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>
---
 contrib/completion/git-prompt.sh | 4 ++--
 t/t9903-bash-prompt.sh           | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

Comments

Denton Liu Dec. 23, 2019, 10 p.m. UTC | #1
Hi Elijah,

> Subject: contrib: change the prompt for interactive-based rebases

I'll also echo Gábor's comments and suggest that you use "git-prompt"
for the change area.

On Mon, Dec 23, 2019 at 06:49:55PM +0000, Elijah Newren via GitGitGadget wrote:
> From: Elijah Newren <newren@gmail.com>
> 
> 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>
> ---
>  contrib/completion/git-prompt.sh | 4 ++--
>  t/t9903-bash-prompt.sh           | 8 ++++----
>  2 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
> index 1d510cd47b..8f8a22ba60 100644
> --- a/contrib/completion/git-prompt.sh
> +++ b/contrib/completion/git-prompt.sh
> @@ -430,9 +430,9 @@ __git_ps1 ()
>  		__git_eread "$g/rebase-merge/msgnum" step
>  		__git_eread "$g/rebase-merge/end" total
>  		if [ -f "$g/rebase-merge/interactive" ]; then
> -			r="|REBASE-i"
> +			r="|REBASE"
>  		else
> -			r="|REBASE-m"
> +			r="|REBASE"

We should just drop the if here since both arms are the same..

Thanks,

Denton

>  		fi
>  	else
>  		if [ -d "$g/rebase-apply" ]; then
> diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh
> index 88bc733ad6..7ca35d358d 100755
> --- a/t/t9903-bash-prompt.sh
> +++ b/t/t9903-bash-prompt.sh
> @@ -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"
> -- 
> gitgitgadget
>
diff mbox series

Patch

diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
index 1d510cd47b..8f8a22ba60 100644
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@ -430,9 +430,9 @@  __git_ps1 ()
 		__git_eread "$g/rebase-merge/msgnum" step
 		__git_eread "$g/rebase-merge/end" total
 		if [ -f "$g/rebase-merge/interactive" ]; then
-			r="|REBASE-i"
+			r="|REBASE"
 		else
-			r="|REBASE-m"
+			r="|REBASE"
 		fi
 	else
 		if [ -d "$g/rebase-apply" ]; then
diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh
index 88bc733ad6..7ca35d358d 100755
--- a/t/t9903-bash-prompt.sh
+++ b/t/t9903-bash-prompt.sh
@@ -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"