summaryrefslogtreecommitdiff
path: root/contrib/completion
diff options
context:
space:
mode:
authorSZEDER Gábor <szeder@ira.uka.de>2011-04-01 15:47:37 (GMT)
committerSZEDER Gábor <szeder@ira.uka.de>2013-06-24 16:03:37 (GMT)
commitdd0b72cbd9e64c782a31c6acfca2ba9cf2ffb266 (patch)
tree0b4156276d1552a1a8b07c8af0e65b4294819d1d /contrib/completion
parent0f37c125814afc8ad2fa43fecd8b200216ebfab5 (diff)
downloadgit-dd0b72cbd9e64c782a31c6acfca2ba9cf2ffb266.zip
git-dd0b72cbd9e64c782a31c6acfca2ba9cf2ffb266.tar.gz
git-dd0b72cbd9e64c782a31c6acfca2ba9cf2ffb266.tar.bz2
bash prompt: use bash builtins to check stash state
When the environment variable $GIT_PS1_SHOWSTASHSTATE is set __git_ps1() checks the presence of stashes by running 'git rev-parse --verify refs/stash'. This command not only checks that the 'refs/stash' ref exists but also, well, verifies that it's a valid ref. However, we don't need to be that thorough for the bash prompt. We can omit that verification and only check whether 'refs/stash' exists or not. Since 'git pack-refs' never packs 'refs/stash', it's a matter of checking the existence of a ref file. Perform this check using only bash builtins to spare the overhead of fork()+exec()ing a git process. Also run 'git pack-refs --all' in the corresponding test to document that the prompt script depends on 'git pack-refs' not packing 'refs/stash' and to catch possible breakages should this behavior ever change. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Diffstat (limited to 'contrib/completion')
-rw-r--r--contrib/completion/git-prompt.sh5
1 files changed, 3 insertions, 2 deletions
diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
index 6e8f486..afa8670 100644
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@ -435,8 +435,9 @@ __git_ps1 ()
i="#"
fi
fi
- if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ]; then
- git rev-parse --verify refs/stash >/dev/null 2>&1 && s="$"
+ if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
+ [ -r "$g/refs/stash" ]; then
+ s="$"
fi
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&