Re: [PATCH] prompt: fix for simple rebase
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:57:29
Felipe Contreras [off-list ref] writes:
quoted hunk
When we are rebasing without options ('am' mode), the head rebased lives in '$g/rebase-apply/head-name', so lets use that information so it's reported the same way as if we were doing other rebases (-i or -m). Signed-off-by: Felipe Contreras <redacted> --- contrib/completion/git-prompt.sh | 2 ++ t/t9903-bash-prompt.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-)diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh index eaf5c36..bbf7657 100644 --- a/contrib/completion/git-prompt.sh +++ b/contrib/completion/git-prompt.sh@@ -279,6 +279,7 @@ __git_ps1 () step=$(cat "$g/rebase-apply/next") total=$(cat "$g/rebase-apply/last") if [ -f "$g/rebase-apply/rebasing" ]; then + b="$(cat "$g/rebase-apply/head-name")" r="|REBASE" elif [ -f "$g/rebase-apply/applying" ]; then r="|AM"
Looks correct to me, and the resulting behaviour is better
I wonder if the overall structure can be improved on top of this
change, though.
if [ -d rebase-merge ]; then
set b, step, total and r to show REBASE-kind stuff
else
if [ -d rebase-apply]; then
set step, total and r to show AM,
but if rebasing is there, show REBASE
elif ...
handle all the other non rebase state
elif ...
in many different elif-then pieces
fi
if $b is not set; then
set b to show the current branch
fi
fi
It looks somewhat strange that this has to be nested, not a straight
cascade of if/elif/.../fi.
quoted hunk
@@ -295,6 +296,7 @@ __git_ps1 () r="|BISECTING" fi + test -n "$b" || b="$(git symbolic-ref HEAD 2>/dev/null)" || { detached=yes b="$(diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh index 083b319..15521cc 100755 --- a/t/t9903-bash-prompt.sh +++ b/t/t9903-bash-prompt.sh@@ -276,7 +276,7 @@ test_expect_success 'prompt - rebase merge' ' ' test_expect_success 'prompt - rebase' ' - printf " ((t2)|REBASE 1/3)" > expected && + printf " (b2|REBASE 1/3)" > expected && git checkout b2 && test_when_finished "git checkout master" && test_must_fail git rebase b1 b2 &&