[PATCH 3/3] completion: Prevents GIT_PS1_DIRTYSTATE from breaking when CWD is .git
- From
Ted Pavlic <ted@tedpavlic.com>
- Date
- Feb 11, 2009, 15:37 UTC
- Message-ID
- <1234366634-17900-4-git-send-email-ted@tedpavlic.com>
- In-Reply-To
- <1234366634-17900-3-git-send-email-ted@tedpavlic.com>
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