Browse Source

show-ref: accept HEAD with --verify

Previously, when --verify was specified, show-ref would use a separate
code path which did not handle HEAD and treated it as an invalid
ref. Thus, "git show-ref --verify HEAD" (where "--verify" is used
because the user is not interested in seeing refs/remotes/origin/HEAD)
did not work as expected.

Instead of insisting that the input begins with "refs/", allow "HEAD"
as well in the codepath that handles "--verify", so that all valid
full refnames including HEAD are passed to the same output machinery.

Signed-off-by: Vladimir Panteleev <git@thecybershadow.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Vladimir Panteleev 8 years ago committed by Junio C Hamano
parent
commit
ec7c51bc6b
  1. 2
      builtin/show-ref.c
  2. 11
      t/t1403-show-ref.sh

2
builtin/show-ref.c

@ -202,7 +202,7 @@ int cmd_show_ref(int argc, const char **argv, const char *prefix)
while (*pattern) { while (*pattern) {
struct object_id oid; struct object_id oid;


if (starts_with(*pattern, "refs/") && if ((starts_with(*pattern, "refs/") || !strcmp(*pattern, "HEAD")) &&
!read_ref(*pattern, oid.hash)) { !read_ref(*pattern, oid.hash)) {
if (!quiet) if (!quiet)
show_one(*pattern, &oid); show_one(*pattern, &oid);

11
t/t1403-show-ref.sh

@ -164,4 +164,15 @@ test_expect_success 'show-ref --heads, --tags, --head, pattern' '
test_cmp expect actual test_cmp expect actual
' '


test_expect_success 'show-ref --verify HEAD' '
echo $(git rev-parse HEAD) HEAD >expect &&
git show-ref --verify HEAD >actual &&
test_cmp expect actual &&

>expect &&

git show-ref --verify -q HEAD >actual &&
test_cmp expect actual
'

test_done test_done

Loading…
Cancel
Save