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

From: Denton Liu <[email-masked]>
Date: Mon, 23 Dec 2019 17:00:24 -0500

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 <[email-masked]>
> 
> 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 <[email-masked]>
> ---
>  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
>