diff options
author | SZEDER Gábor <szeder@ira.uka.de> | 2011-04-01 17:47:37 +0200 |
---|---|---|
committer | SZEDER Gábor <szeder@ira.uka.de> | 2013-06-24 18:03:37 +0200 |
commit | dd0b72cbd9e64c782a31c6acfca2ba9cf2ffb266 (patch) | |
tree | 0b4156276d1552a1a8b07c8af0e65b4294819d1d | |
parent | bash prompt: use bash builtins to check for unborn branch for dirty state (diff) | |
download | tgif-dd0b72cbd9e64c782a31c6acfca2ba9cf2ffb266.tar.xz |
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>
-rw-r--r-- | contrib/completion/git-prompt.sh | 5 | ||||
-rwxr-xr-x | t/t9903-bash-prompt.sh | 1 |
2 files changed, 4 insertions, 2 deletions
diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh index 6e8f486e66..afa867030d 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-}" ] && diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh index b9895c797c..c05458cbe6 100755 --- a/t/t9903-bash-prompt.sh +++ b/t/t9903-bash-prompt.sh @@ -328,6 +328,7 @@ test_expect_success 'prompt - stash status indicator - stash' ' echo 2 >file && git stash && test_when_finished "git stash drop" && + git pack-refs --all && ( GIT_PS1_SHOWSTASHSTATE=y && __git_ps1 >"$actual" |