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

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Ted Pavlic
Date: Wednesday, February 11, 2009 - 8:37 am

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".

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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread: