bash prompt: print unique detached HEAD abbreviated object name
authorSZEDER Gábor <szeder@ira.uka.de>
Sun, 23 Jun 2013 23:55:42 +0000 (01:55 +0200)
committerSZEDER Gábor <szeder@ira.uka.de>
Mon, 24 Jun 2013 15:22:09 +0000 (17:22 +0200)
When describing a detached HEAD according to the $GIT_PS1_DESCRIBE
environment variable fails, __git_ps1() runs 'cut -c1-7 .git/HEAD' to
show the 7 hexdigits abbreviated commit object name in the prompt.
Obviously, this neither respects core.abbrev nor produces a unique
object name.

Fix this by using 'git rev-parse --short HEAD' instead and adjust the
corresponding test to use non-standard number of hexdigits.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
contrib/completion/git-prompt.sh
t/t9903-bash-prompt.sh
index 07a6218d10679f5102c3649794bfd98e1883da75..3c5e62bb9a86ec84285662805569e28f9bc00850 100644 (file)
@@ -392,7 +392,7 @@ __git_ps1 ()
                                        git describe --tags --exact-match HEAD ;;
                                esac 2>/dev/null)" ||
 
-                               b="$(cut -c1-7 "$g/HEAD" 2>/dev/null)..." ||
+                               b="$(git rev-parse --short HEAD 2>/dev/null)..." ||
                                b="unknown"
                                b="($b)"
                        }
index 416e6219ce13a16ce4aa608ac29025cefcacc231..0d53aa6d6948640d287bc514ae9b001cfbf71a42 100755 (executable)
@@ -50,7 +50,8 @@ test_expect_success SYMLINKS 'prompt - branch name - symlink symref' '
 '
 
 test_expect_success 'prompt - detached head' '
-       printf " ((%s...))" $(git log -1 --format="%h" b1^) >expected &&
+       printf " ((%s...))" $(git log -1 --format="%h" --abbrev=13 b1^) >expected &&
+       test_config core.abbrev 13 &&
        git checkout b1^ &&
        test_when_finished "git checkout master" &&
        __git_ps1 >"$actual" &&