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.