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

Re: [PATCH 3/3] completion: Prevents GIT_PS1_DIRTYSTATE from breaking when CWD is .git

From
Shawn O. Pearce <spearce@spearce.org>
Date
Feb 11, 2009, 16:26 UTC
Message-ID
<20090211162612.GG30949@spearce.org>
In-Reply-To
<1234366634-17900-4-git-send-email-ted@tedpavlic.com>
Ted Pavlic <ted@tedpavlic.com> wrote:
Show 6 quoted lines
> The GIT_PS1_DIRTYSTATE support uses a "git diff" to see if a "*" should
> be placed after the branch name. The "git diff" fails with an ugly error
> if the user has just changed directory into GIT_DIR.
> 
> This patch uses "git rev-parse --is-inside-work-tree" to determine
> whether a "--work-tree=.." should be added to the "git diff".

I think it makes more sense to just drop the work tree stuff from the prompt if we aren't inside the work tree anymore. Meaning, we should behave as though bash.showDirtyState is false.

 
Show 28 quoted lines
> Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
> ---
>  contrib/completion/git-completion.bash |    6 +++++-
>  1 files changed, 5 insertions(+), 1 deletions(-)
> 
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 6772be7..ffde82a 100755
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -115,10 +115,14 @@ __git_ps1 ()
>  
>  		local w
>  		local i
> +		local worktreestr
>  
>  		if test -n "${GIT_PS1_SHOWDIRTYSTATE-}"; then
>  			if test "$(git config --bool bash.showDirtyState)" != "false"; then
> -				git diff --no-ext-diff --ignore-submodules \
> +				if test "false" = "$(git rev-parse --is-inside-work-tree 2>/dev/null)"; then
> +					worktreestr="--work-tree=.."
> +				fi
> +				git ${worktreestr} 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 \
> -- 
> 1.6.1.2.390.gba743
> 
-- 
Shawn.
Previous: Shawn O. PearceNext: Ted Pavlic
Message 7 of 16 in “completion: Convention updates and DIRTYSTATE fix”
  1. 0/3 completion: Convention updates and DIRTYSTATE fixTed Pavlic, Feb 11, 2009
  2. 1/3 completion: For consistency, changed "git rev-parse" to __gitdir calls.Ted Pavlic, Feb 11, 2009
  3. 2/3 completion: Change "if [...]" to "if test ..." to match git conventionTed Pavlic, Feb 11, 2009
  4. 3/3 completion: Prevents GIT_PS1_DIRTYSTATE from breaking when CWD is .gitTed Pavlic, Feb 11, 2009
  5. 4/3 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. Ted PavlicFeb 11, 2009
  9. Junio C HamanoFeb 11, 2009
  10. Ted PavlicFeb 11, 2009
  11. Shawn O. PearceFeb 11, 2009
  12. Shawn O. PearceFeb 11, 2009
  13. Ted PavlicFeb 11, 2009
  14. Junio C HamanoFeb 11, 2009
  15. Junio C HamanoFeb 11, 2009
  16. Shawn O. PearceFeb 11, 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.