git-prompt: do not look for refs/stash in $GIT_DIR
authorJeff King <peff@peff.net>
Sat, 23 Aug 2014 05:26:51 +0000 (01:26 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 25 Aug 2014 19:21:17 +0000 (12:21 -0700)
Since dd0b72c (bash prompt: use bash builtins to check stash
state, 2011-04-01), git-prompt checks whether we have a
stash by looking for $GIT_DIR/refs/stash. Generally external
programs should never do this, because they would miss
packed-refs.

That commit claims that packed-refs does not pack
refs/stash, but that is not quite true. It does pack the
ref, but due to a bug, fails to prune the ref. When we fix
that bug, we would want to be doing the right thing here.

Signed-off-by: Jeff King <peff@peff.net>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-prompt.sh
index 9d684b10a67ea663410db3ba68482c1a52bbc367..c5473dc8dba78b372fd95ef2bf5257ff5cdc3baf 100644 (file)
@@ -468,7 +468,8 @@ __git_ps1 ()
                        fi
                fi
                if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
-                  [ -r "$g/refs/stash" ]; then
+                  git rev-parse --verify --quiet refs/stash >/dev/null
+               then
                        s="$"
                fi