describe: prepend "tags/" when describing tags with embedded name

The man page of the "git describe" command explains the expected output when using the --all option, i.e. the full reference path is shown, including heads/ or tags/ prefix. When 212945d4a85dfa172ea55ec73b1d830ef2d8582f ("Teach git-describe to verify annotated tag names before output") made Git favor the embedded name of annotated tags, it accidentally changed the output format when the --all flag is given, only printing the tag's name without the prefix. Check if --all was specified and re-add the "tags/" prefix for this special case to fix the regresssion. Signed-off-by: Daniel Knittl-Frank <knittl89+git@googlemail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Daniel Knittl-Frank committed Dec 11, 2017 at 18:24 UTC 1bba00130a1a0332ec0ad2f878a09ca9b2b18ee2
2 files changed +10 -3
builtin/describe.c
+5 -2
@@ -271,10 +271,13 @@ static void display_name(struct commit_name *n)
271 n->name_checked = 1;
272 }
273
274 - if (n->tag)
274 + if (n->tag) {
275 + if (all)
276 + printf("tags/");
277 printf("%s", n->tag->tag);
276 - else
278 + } else {
279 printf("%s", n->path);
280 + }
281 }
282
283 static void show_suffix(int depth, const struct object_id *oid)
t/t6120-describe.sh
+5 -1
@@ -122,7 +122,7 @@ test_expect_success 'describe --contains defaults to HEAD without commit-ish' '
122 '
123
124 : >err.expect
125 -check_describe A --all A^0
125 +check_describe tags/A --all A^0
126 test_expect_success 'no warning was displayed for A' '
127 test_cmp err.expect err.actual
128 '
@@ -340,4 +340,8 @@ test_expect_success ULIMIT_STACK_SIZE 'describe works in a deep repo' '
340 test_cmp expect actual
341 '
342
343 +check_describe tags/A --all A
344 +check_describe tags/c --all c
345 +check_describe heads/branch_A --all --match='branch_*' branch_A
346 +
347 test_done