Skip to content

Commit 0f37c12

Browse files
committed
bash prompt: use bash builtins to check for unborn branch for dirty state
When the dirty work tree and index status indicator is enabled, __git_ps1() checks for changes in the index by running 'git diff-index --cached --quiet HEAD --' and looking at its exit code. However, that makes sense only when HEAD points to a valid commit: on an unborn branch the failure of said command would be caused by the invalid HEAD, not by changes in the index. Therefore, __git_ps1() first checks for a valid HEAD by running 'git rev-parse --quiet --verify HEAD'. Since the previous patch we implicitly check HEAD's validity by running 'git rev-parse ... --short HEAD', making the dirty status indicator's 'git rev-parse' check redundant. It's sufficient to check for non-emptyness of the variable holding the abbreviated commit object name, thereby sparing the overhead of fork()+exec()ing a git process. Signed-off-by: SZEDER Gábor <[email protected]>
1 parent e3e0b93 commit 0f37c12

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

contrib/completion/git-prompt.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ __git_ps1 ()
429429
[ "$(git config --bool bash.showDirtyState)" != "false" ]
430430
then
431431
git diff --no-ext-diff --quiet --exit-code || w="*"
432-
if git rev-parse --quiet --verify HEAD >/dev/null; then
432+
if [ -n "$short_sha" ]; then
433433
git diff-index --cached --quiet HEAD -- || i="+"
434434
else
435435
i="#"

0 commit comments

Comments
 (0)