diff options
author | Junio C Hamano <gitster@pobox.com> | 2017-09-28 14:47:52 +0900 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-09-28 14:47:52 +0900 |
commit | a515136c523cca1d4c5ea2b3c46b3f26bbd22639 (patch) | |
tree | 1b10df0b1a21ea0164040b5ff7c47a9fb979a8ad | |
parent | 7451fcdc0d3cffdb9aa79d2651830b44a8e052d6 (diff) | |
parent | da769d2986470931b8e80b8d14afcae3d7cc20d7 (diff) | |
download | git-a515136c523cca1d4c5ea2b3c46b3f26bbd22639.tar.gz git-a515136c523cca1d4c5ea2b3c46b3f26bbd22639.tar.xz |
Merge branch 'jk/describe-omit-some-refs'
"git describe --match" learned to take multiple patterns in v2.13
series, but the feature ignored the patterns after the first one
and did not work at all. This has been fixed.
* jk/describe-omit-some-refs:
describe: fix matching to actually match all patterns
-rw-r--r-- | builtin/describe.c | 9 | ||||
-rwxr-xr-x | t/t6120-describe.sh | 6 |
2 files changed, 11 insertions, 4 deletions
diff --git a/builtin/describe.c b/builtin/describe.c index e77163e90..3dc183648 100644 --- a/builtin/describe.c +++ b/builtin/describe.c @@ -158,18 +158,21 @@ static int get_name(const char *path, const struct object_id *oid, int flag, voi * pattern. */ if (patterns.nr) { + int found = 0; struct string_list_item *item; if (!is_tag) return 0; for_each_string_list_item(item, &patterns) { - if (!wildmatch(item->string, path + 10, 0)) + if (!wildmatch(item->string, path + 10, 0)) { + found = 1; break; + } + } - /* If we get here, no pattern matched. */ + if (!found) return 0; - } } /* Is it annotated? */ diff --git a/t/t6120-describe.sh b/t/t6120-describe.sh index 3d45dc295..70d92d24c 100755 --- a/t/t6120-describe.sh +++ b/t/t6120-describe.sh @@ -182,10 +182,14 @@ check_describe "test2-lightweight-*" --tags --match="test2-*" check_describe "test2-lightweight-*" --long --tags --match="test2-*" HEAD^ -check_describe "test1-lightweight-*" --long --tags --match="test1-*" --match="test2-*" HEAD^ +check_describe "test2-lightweight-*" --long --tags --match="test1-*" --match="test2-*" HEAD^ check_describe "test2-lightweight-*" --long --tags --match="test1-*" --no-match --match="test2-*" HEAD^ +check_describe "test1-lightweight-*" --long --tags --match="test1-*" --match="test3-*" HEAD + +check_describe "test1-lightweight-*" --long --tags --match="test3-*" --match="test1-*" HEAD + test_expect_success 'name-rev with exact tags' ' echo A >expect && tag_object=$(git rev-parse refs/tags/A) && |