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>maint
parent
0f37c12581
commit
dd0b72cbd9
|
@ -435,8 +435,9 @@ __git_ps1 ()
|
||||||
i="#"
|
i="#"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ]; then
|
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
|
||||||
git rev-parse --verify refs/stash >/dev/null 2>&1 && s="$"
|
[ -r "$g/refs/stash" ]; then
|
||||||
|
s="$"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
|
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
|
||||||
|
|
|
@ -328,6 +328,7 @@ test_expect_success 'prompt - stash status indicator - stash' '
|
||||||
echo 2 >file &&
|
echo 2 >file &&
|
||||||
git stash &&
|
git stash &&
|
||||||
test_when_finished "git stash drop" &&
|
test_when_finished "git stash drop" &&
|
||||||
|
git pack-refs --all &&
|
||||||
(
|
(
|
||||||
GIT_PS1_SHOWSTASHSTATE=y &&
|
GIT_PS1_SHOWSTASHSTATE=y &&
|
||||||
__git_ps1 >"$actual"
|
__git_ps1 >"$actual"
|
||||||
|
|
Loading…
Reference in New Issue