[PATCHv3 12/16] bash prompt: use bash builtins to check for unborn branch for dirty state
- From
SZEDER Gábor <szeder@ira.uka.de>
- Date
- Jun 24, 2013, 16:39 UTC
- Message-ID
- <1372091966-19315-13-git-send-email-szeder@ira.uka.de>
- In-Reply-To
- <1372091966-19315-1-git-send-email-szeder@ira.uka.de>
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 <szeder@ira.uka.de> --- contrib/completion/git-prompt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh index 88d6121d..6e8f486e 100644 --- a/contrib/completion/git-prompt.sh +++ b/contrib/completion/git-prompt.sh @@ -429,7 +429,7 @@ __git_ps1 () [ "$(git config --bool bash.showDirtyState)" != "false" ] then git diff --no-ext-diff --quiet --exit-code || w="*" - if git rev-parse --quiet --verify HEAD >/dev/null; then + if [ -n "$short_sha" ]; then git diff-index --cached --quiet HEAD -- || i="+" else i="#"
-- 1.8.3.1.599.g4459181