Re: [PATCH v2 11/15] contrib: change the prompt for interactive-based rebases
- From
Denton Liu <liu.denton@gmail.com>
- Date
- Dec 23, 2019, 22:00 UTC
- Message-ID
- <20191223220024.GA2152949@generichostname>
- In-Reply-To
- <94b5a3051d743e8f54c21bc4cd0413f3c0dd05fa.1577127000.git.gitgitgadget@gmail.com>
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:
Show 53 quoted lines
> 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
Show 42 quoted lines
> 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 >