diff options
author | Vladimir Panteleev <git@thecybershadow.net> | 2017-01-23 18:00:56 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-01-23 12:06:29 -0800 |
commit | f1627040b9305dc38994f799c172393909b2c70c (patch) | |
tree | f40356f1b99e24683e4013a1beb7009202a5aa85 | |
parent | ec7c51bc6bda0a836b4955962becedbb702bbc43 (diff) | |
download | git-f1627040b9305dc38994f799c172393909b2c70c.tar.gz git-f1627040b9305dc38994f799c172393909b2c70c.tar.xz |
show-ref: allow -d to work with --verify
Move handling of -d into show_one(), so that it takes effect when
--verify is present as well as when it is absent. This is useful when
the user wishes to avoid the costly iteration of refs.
Signed-off-by: Vladimir Panteleev <git@thecybershadow.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/show-ref.c | 23 | ||||
-rwxr-xr-x | t/t1403-show-ref.sh | 9 |
2 files changed, 21 insertions, 11 deletions
diff --git a/builtin/show-ref.c b/builtin/show-ref.c index 0e53e3da4..a72a626b1 100644 --- a/builtin/show-ref.c +++ b/builtin/show-ref.c @@ -19,19 +19,27 @@ static const char *exclude_existing_arg; static void show_one(const char *refname, const struct object_id *oid) { - const char *hex = find_unique_abbrev(oid->hash, abbrev); + const char *hex; + struct object_id peeled; + + hex = find_unique_abbrev(oid->hash, abbrev); if (hash_only) printf("%s\n", hex); else printf("%s %s\n", hex, refname); + + if (!deref_tags) + return; + + if (!peel_ref(refname, peeled.hash)) { + hex = find_unique_abbrev(peeled.hash, abbrev); + printf("%s %s^{}\n", hex, refname); + } } static int show_ref(const char *refname, const struct object_id *oid, int flag, void *cbdata) { - const char *hex; - struct object_id peeled; - if (show_head && !strcmp(refname, "HEAD")) goto match; @@ -79,13 +87,6 @@ match: show_one(refname, oid); - if (!deref_tags) - return 0; - - if (!peel_ref(refname, peeled.hash)) { - hex = find_unique_abbrev(peeled.hash, abbrev); - printf("%s %s^{}\n", hex, refname); - } return 0; } diff --git a/t/t1403-show-ref.sh b/t/t1403-show-ref.sh index 5932beada..c6872bd96 100755 --- a/t/t1403-show-ref.sh +++ b/t/t1403-show-ref.sh @@ -97,6 +97,9 @@ test_expect_success 'show-ref -d' ' git show-ref -d refs/tags/A refs/tags/C >actual && test_cmp expect actual && + git show-ref --verify -d refs/tags/A refs/tags/C >actual && + test_cmp expect actual && + echo $(git rev-parse refs/heads/master) refs/heads/master >expect && git show-ref -d master >actual && test_cmp expect actual && @@ -116,6 +119,12 @@ test_expect_success 'show-ref -d' ' test_cmp expect actual && test_must_fail git show-ref -d --verify heads/master >actual && + test_cmp expect actual && + + test_must_fail git show-ref --verify -d A C >actual && + test_cmp expect actual && + + test_must_fail git show-ref --verify -d tags/A tags/C >actual && test_cmp expect actual ' |