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

Re: [PATCH 3/4] completion: Better __git_ps1 support when not in working directory

From
Shawn O. Pearce <spearce@spearce.org>
Date
Feb 11, 2009, 18:09 UTC
Message-ID
<20090211180902.GM30949@spearce.org>
In-Reply-To
<1234375406-27099-4-git-send-email-ted@tedpavlic.com>
Ted Pavlic <ted@tedpavlic.com> wrote:
Show 11 quoted lines
> If .git/HEAD is not readable, __git_ps1 does nothing.
> 
> If --is-in-git-dir, __git_ps1 returns " (GIT_DIR!)" as a cautionary
> note. The previous behavior would show the branch name (and would
> optionally attempt to determine the dirtyState of the directory, which
> was impossible because a "git diff" was used).
> 
> If --is-in-work-tree, __git_ps1 returns the branch name. Additionally,
> if showDirtyState is on, the dirty state is displayed.
> 
> Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Show 65 quoted lines
> ---
>  contrib/completion/git-completion.bash |   36 +++++++++++++++++++------------
>  1 files changed, 22 insertions(+), 14 deletions(-)
> 
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 7706170..c28d6be 100755
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -108,7 +108,9 @@ __git_ps1 ()
>  			fi
>  			if ! b="$(git symbolic-ref HEAD 2>/dev/null)"; then
>  				if ! b="$(git describe --exact-match HEAD 2>/dev/null)"; then
> -					b="$(cut -c1-7 "$g/HEAD")..."
> +					if [ -r "$g/HEAD" ]; then
> +						b="$(cut -c1-7 "$g/HEAD")..."
> +					fi
>  				fi
>  			fi
>  		fi
> @@ -116,23 +118,29 @@ __git_ps1 ()
>  		local w
>  		local i
>  
> -		if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ]; then
> -			if [ "$(git config --bool bash.showDirtyState)" != "false" ]; then
> -				git diff --no-ext-diff --ignore-submodules \
> -					--quiet --exit-code || w="*"
> -				if git rev-parse --quiet --verify HEAD >/dev/null; then
> -					git diff-index --cached --quiet \
> -						--ignore-submodules HEAD -- || i="+"
> -				else
> -					i="#"
> +		if [ "true" = "$(git rev-parse --is-inside-git-dir 2>/dev/null)" ]; then
> +			b="GIT_DIR!"
> +		elif [ "true" = "$(git rev-parse --is-inside-work-tree 2>/dev/null)" ]; then
> +			if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ]; then
> +				if [ "$(git config --bool bash.showDirtyState)" != "false" ]; then
> +					git diff --no-ext-diff --ignore-submodules \
> +						--quiet --exit-code || w="*"
> +					if git rev-parse --quiet --verify HEAD >/dev/null; then
> +						git diff-index --cached --quiet \
> +							--ignore-submodules HEAD -- || i="+"
> +					else
> +						i="#"
> +					fi
>  				fi
>  			fi
>  		fi
>  
> -		if [ -n "${1-}" ]; then
> -			printf "$1" "${b##refs/heads/}$w$i$r"
> -		else
> -			printf " (%s)" "${b##refs/heads/}$w$i$r"
> +		if [ -n "$b" ]; then
> +			if [ -n "${1-}" ]; then
> +				printf "$1" "${b##refs/heads/}$w$i$r"
> +			else
> +				printf " (%s)" "${b##refs/heads/}$w$i$r"
> +			fi
>  		fi
>  	fi
>  }
> -- 
> 1.6.1.2.390.gba743
> 
-- 
Shawn.
Previous: Shawn O. PearceNext: Shawn O. Pearce
Message 7 of 21 in “completion: Fixes and better non-work-tree support”
  1. 0/4 completion: Fixes and better non-work-tree supportTed Pavlic, Feb 11, 2009
  2. 1/4 completion: For consistency, changed "git rev-parse" to __gitdir calls.Ted Pavlic, Feb 11, 2009
  3. 2/4 completion: Use consistent if [...] convention. No test.Ted Pavlic, Feb 11, 2009
  4. 3/4 completion: Better __git_ps1 support when not in working directoryTed Pavlic, Feb 11, 2009
  5. 4/4 completion: More fixes to prevent unbound variable errors.Ted Pavlic, Feb 11, 2009
  6. Shawn O. PearceFeb 11, 2009
  7. Shawn O. PearceFeb 11, 2009
  8. Shawn O. PearceFeb 11, 2009
  9. Junio C HamanoFeb 11, 2009
  10. Shawn O. PearceFeb 11, 2009
  11. Junio C HamanoFeb 11, 2009
  12. Ted PavlicFeb 11, 2009
  13. Jeff KingFeb 11, 2009
  14. 0/4 completion fixes: Acks, whitespace, and r=""Ted Pavlic, Feb 11, 2009
  15. 1/4 completion: For consistency, changed "git rev-parse" to __gitdir calls.Ted Pavlic, Feb 11, 2009
  16. 2/4 completion: Use consistent if [...] convention. No test.Ted Pavlic, Feb 11, 2009
  17. 3/4 completion: Better __git_ps1 support when not in working directoryTed Pavlic, Feb 11, 2009
  18. 4/4 completion: More fixes to prevent unbound variable errors.Ted Pavlic, Feb 11, 2009
  19. Ted PavlicFeb 20, 2009
  20. Thomas RastFeb 20, 2009
  21. Ted PavlicFeb 20, 2009

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.