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

Re: [PATCH v2 15/16] tag: implicitly supply --list given the -n option

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Mar 21, 2017, 19:11 UTC
Message-ID
<CACBZZX7yRRTQpcFZ9eO2_+HdB979p6URE+jsXJakxw7jpnOvmA@mail.gmail.com>
In-Reply-To
<xmqq37e6piae.fsf@gitster.mtv.corp.google.com>
On Tue, Mar 21, 2017 at 7:59 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 52 quoted lines
> Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:
>
>> Change the "tag" command to treat the "-n" invocation as a list-like
>> option in addition to --contains, --points-at etc.
>>
>> Most of the work for this was done in my earlier "tag: Implicitly
>> supply --list given another list-like option" commit, but I've split
>> off this patch since it's more contentious. Now these will be
>> synonymous:
>>
>>     git tag -n 100
>>     git tag -n --list 100
>
> Hmph.  I would understand if these meant the same thing:
>
>     git tag -l -n 100
>     git tag -l -n=100
>     git tag -l -n100
>
> with or without "-l".  And accepting any of the above three without "-l"
> instead of rejecting is a very good change, I would think.
>
> I however do not understand how accepting this:
>
>     git tag -n --list 100
>
> would be a good thing, as "100" an optional parameter to the "-n"
> option.
>
>> Whereas before the former would die. This doesn't technically
>> introduce any more ambiguity than the aforementioned change applied to
>> th other list-like options, but it does introduce the possibility for
>> more confusion, since instead of the latter of these dying:
>>
>>     git tag -n100
>>     git tag -n 100
>>
>> It now works entirely differently, i.e. invokes list mode with a
>> filter for "100" as a pattern. I.e. it's synonymous with:
>>
>>     git tag -n --list 100
>
> Ahhh, yuck.  OK, so in "git tag -n --list 100", 100 does not have
> anything to do with the -n option.  It is a pattern and -n specifies
> "just one line" by default.
>
> Oh, boy, that is confusing.  While it is very logical.
>
> Still I think it is OK as I can see why people who wanted to have
> '-n' in the first place may want
>
>     git tag -n -l <pattern>

Yeah I see now that this is rather badly explained. I'll fix this up for v3. All of this worked already:

    $ ./git tag 100
    $ ./git tag -n -l 100
    100             tag: add tests for --with and --without
    $ ./git tag -l -n 100
    100             tag: add tests for --with and --without

So actually thinking about it again it doesn't add any more ambiguity than we had before. The change is just strictly getting rid of the need for -l for consistency with --contains, --points-at etc.

I see now that the whole thing that led me down this golden path was that I was removing the failing "git tag -n 100" test, so while I was still wrapping my mind around this I thought I was introducing some *more* confusion, but really that test was just testing that it didn't work, as opposed to "git tag -l -n 100".

I'm just going to squash this into the "tag: implicitly supply --list given another list-like option" patch for v3 unless you have objections, I think there's no reason to split this off any more than splitting off e.g. --points-at etc.

Previous: Junio C HamanoNext: Junio C Hamano
Message 10 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.