git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] prompt: fix for simple rebase

From
Junio C Hamano <gitster@pobox.com>
Date
May 29, 2013, 18:26 UTC
Message-ID
<7vehcptzfb.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1369808488-16977-1-git-send-email-felipe.contreras@gmail.com>
Felipe Contreras <felipe.contreras@gmail.com> writes:
Show 22 quoted lines
> 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 <felipe.contreras@gmail.com>
> ---
>  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.

Show 21 quoted lines
> @@ -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 &&
Previous: Felipe Contreras
Message 2 of 2 in “prompt: fix for simple rebase”
  1. prompt: fix for simple rebaseFelipe Contreras, May 29, 2013
  2. Junio C HamanoMay 29, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.