From 1bba00130a1a0332ec0ad2f878a09ca9b2b18ee2 Mon Sep 17 00:00:00 2001 From: Daniel Knittl-Frank Date: Mon, 11 Dec 2017 18:24:54 +0100 Subject: 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 Signed-off-by: Junio C Hamano diff --git a/builtin/describe.c b/builtin/describe.c index 29075db..2004a1a 100644 --- a/builtin/describe.c +++ b/builtin/describe.c @@ -271,10 +271,13 @@ static void display_name(struct commit_name *n) n->name_checked = 1; } - if (n->tag) + if (n->tag) { + if (all) + printf("tags/"); printf("%s", n->tag->tag); - else + } else { printf("%s", n->path); + } } static void show_suffix(int depth, const struct object_id *oid) diff --git a/t/t6120-describe.sh b/t/t6120-describe.sh index 1c0e865..15612b3 100755 --- a/t/t6120-describe.sh +++ b/t/t6120-describe.sh @@ -122,7 +122,7 @@ test_expect_success 'describe --contains defaults to HEAD without commit-ish' ' ' : >err.expect -check_describe A --all A^0 +check_describe tags/A --all A^0 test_expect_success 'no warning was displayed for A' ' test_cmp err.expect err.actual ' @@ -340,4 +340,8 @@ test_expect_success ULIMIT_STACK_SIZE 'describe works in a deep repo' ' test_cmp expect actual ' +check_describe tags/A --all A +check_describe tags/c --all c +check_describe heads/branch_A --all --match='branch_*' branch_A + test_done -- cgit v0.10.2-6-g49f6