git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 10/16] tag: change misleading --list <pattern> documentation

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Mar 21, 2017, 12:58 UTC
Message-ID
<20170321125901.10652-11-avarab@gmail.com>
In-Reply-To
<20170321125901.10652-1-avarab@gmail.com>

Change the documentation for --list so that it's described as a toggle, not as an option that takes a <pattern> as an argument.

Junio initially documented this in b867c7c23a ("git-tag: -l to list tags (usability).", 2006-02-17), but later Jeff King changed "tag" to accept multiple patterns in 588d0e834b ("tag: accept multiple patterns for --list", 2011-06-20).

However, documenting this as "-l <pattern>" was never correct, as these both worked before Jeff's change:

    git tag -l 'v*'
    git tag 'v*' -l

One would expect an option that was documented like that to only accept:

    git tag --list
    git tag --list 'v*rc*'
And after Jeff's change, one that took multiple patterns:
    git tag --list 'v*rc*' --list '*2.8*'

But since it's actually a toggle all of these work as well, and produce identical output to the last example above:

    git tag --list 'v*rc*' '*2.8*'
    git tag --list 'v*rc*' '*2.8*' --list --list --list
    git tag --list 'v*rc*' '*2.8*' --list -l --list -l --list

Now the documentation is more in tune with how the "branch" command describes its --list option since commit cddd127b9a ("branch: introduce --list option", 2011-08-28).

Change the test suite to assert that these invocations work for the cases that weren't already being tested for.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 Documentation/git-tag.txt | 16 +++++++++-------
 t/t7004-tag.sh            | 21 +++++++++++++++++++++
 2 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index 448fdf3743..d534c57156 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -87,13 +87,15 @@ OPTIONS
 	If no number is given to `-n`, only the first line is printed.
 	If the tag is not annotated, the commit message is displayed instead.
 
--l <pattern>::
---list <pattern>::
-	List tags with names that match the given pattern (or all if no
-	pattern is given).  Running "git tag" without arguments also
-	lists all tags. The pattern is a shell wildcard (i.e., matched
-	using fnmatch(3)).  Multiple patterns may be given; if any of
-	them matches, the tag is shown.
+-l::
+--list::
+	Activate the list mode. `git tag <pattern>` would try to create a
+	tag, use `git tag --list <pattern>` to list matching branches, (or
+	all if no pattern is given).
++
+Running "git tag" without arguments also lists all tags. The pattern
+is a shell wildcard (i.e., matched using fnmatch(3)). Multiple
+patterns may be given; if any of them matches, the tag is shown.
 
 --sort=<key>::
 	Sort based on the key given.  Prefix `-` to sort in
diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh
index 958c77ab86..1de7185be0 100755
--- a/t/t7004-tag.sh
+++ b/t/t7004-tag.sh
@@ -118,6 +118,18 @@ test_expect_success 'listing all tags if one exists should succeed' '
 	git tag
 '
 
+cat >expect <<EOF
+mytag
+EOF
+test_expect_success 'Multiple -l or --list options are equivalent to one -l option' '
+	git tag -l -l >actual &&
+	test_cmp expect actual &&
+	git tag --list --list >actual &&
+	test_cmp expect actual &&
+	git tag --list -l --list >actual &&
+	test_cmp expect actual
+'
+
 test_expect_success 'listing all tags if one exists should output that tag' '
 	test $(git tag -l) = mytag &&
 	test $(git tag) = mytag
@@ -336,6 +348,15 @@ test_expect_success 'tag -l can accept multiple patterns' '
 	test_cmp expect actual
 '
 
+test_expect_success 'tag -l can accept multiple patterns interleaved with -l or --list options' '
+	git tag -l "v1*" "v0*" >actual &&
+	test_cmp expect actual &&
+	git tag -l "v1*" --list "v0*" >actual &&
+	test_cmp expect actual &&
+	git tag -l "v1*" "v0*" -l --list >actual &&
+	test_cmp expect actual
+'
+
 test_expect_success 'listing tags in column' '
 	COLUMNS=40 git tag -l --column=row >actual &&
 	cat >expected <<\EOF &&
-- 
2.11.0
Previous: Ævar Arnfjörð BjarmasonNext: Junio C Hamano
Message 33 of 45 in “Various changes to the "tag" command & related”
  1. 00/16 Various changes to the "tag" command & relatedÆvar Arnfjörð Bjarmason, Mar 21, 2017
  2. 01/16 tag doc: move the description of --[no-]merged earlierÆvar Arnfjörð Bjarmason, Mar 21, 2017
  3. Junio C HamanoMar 21, 2017
  4. 03/16 tag doc: reword --[no-]merged to talk about commits, not tipsÆvar Arnfjörð Bjarmason, Mar 21, 2017
  5. 14/16 ref-filter: reflow recently changed branch/tag/for-each-ref docsÆvar Arnfjörð Bjarmason, Mar 21, 2017
  6. Junio C HamanoMar 21, 2017
  7. Ævar Arnfjörð BjarmasonMar 21, 2017
  8. 15/16 tag: implicitly supply --list given the -n optionÆvar Arnfjörð Bjarmason, Mar 21, 2017
  9. Junio C HamanoMar 21, 2017
  10. Ævar Arnfjörð BjarmasonMar 21, 2017
  11. Junio C HamanoMar 21, 2017
  12. Ævar Arnfjörð BjarmasonMar 21, 2017
  13. 13/16 ref-filter: add --no-contains option to tag/branch/for-each-refÆvar Arnfjörð Bjarmason, Mar 21, 2017
  14. Junio C HamanoMar 21, 2017
  15. Ævar Arnfjörð BjarmasonMar 21, 2017
  16. 02/16 tag doc: split up the --[no-]merged documentationÆvar Arnfjörð Bjarmason, Mar 21, 2017
  17. Junio C HamanoMar 21, 2017
  18. 12/16 tag: change --point-at to default to HEADÆvar Arnfjörð Bjarmason, Mar 21, 2017
  19. Junio C HamanoMar 21, 2017
  20. 06/16 tag: remove a TODO item from the test suiteÆvar Arnfjörð Bjarmason, Mar 21, 2017
  21. 04/16 ref-filter: make combining --merged & --no-merged an errorÆvar Arnfjörð Bjarmason, Mar 21, 2017
  22. 05/16 ref-filter: add test for --contains on a non-commitÆvar Arnfjörð Bjarmason, Mar 21, 2017
  23. Junio C HamanoMar 21, 2017
  24. 07/16 tag tests: fix a typo in a test descriptionÆvar Arnfjörð Bjarmason, Mar 21, 2017
  25. 08/16 for-each-ref: partly change <object> to <commit> in helpÆvar Arnfjörð Bjarmason, Mar 21, 2017
  26. Junio C HamanoMar 21, 2017
  27. Ævar Arnfjörð BjarmasonMar 21, 2017
  28. Junio C HamanoMar 21, 2017
  29. 09/16 tag: add more incompatibles mode testsÆvar Arnfjörð Bjarmason, Mar 21, 2017
  30. Junio C HamanoMar 21, 2017
  31. Ævar Arnfjörð BjarmasonMar 21, 2017
  32. 16/16 tag: add tests for --with and --withoutÆvar Arnfjörð Bjarmason, Mar 21, 2017
  33. 10/16 tag: change misleading --list <pattern> documentationÆvar Arnfjörð Bjarmason, Mar 21, 2017
  34. Junio C HamanoMar 21, 2017
  35. Ævar Arnfjörð BjarmasonMar 22, 2017
  36. Junio C HamanoMar 22, 2017
  37. Ævar Arnfjörð BjarmasonMar 22, 2017
  38. Junio C HamanoMar 22, 2017
  39. Jeff KingMar 22, 2017
  40. Ævar Arnfjörð BjarmasonMar 22, 2017
  41. Junio C HamanoMar 23, 2017
  42. Junio C HamanoMar 22, 2017
  43. 11/16 tag: implicitly supply --list given another list-like optionÆvar Arnfjörð Bjarmason, Mar 21, 2017
  44. Junio C HamanoMar 21, 2017
  45. Junio C HamanoMar 21, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.