git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* Feature Request: Passing a number as an option to git tags for displaying latest tags
@ 2015-07-22 17:17 Halil Öztürk
  2015-07-22 18:36 ` Jacob Keller
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Halil Öztürk @ 2015-07-22 17:17 UTC (permalink / raw)
  To: git

Hello team,

Passing a number as an option to "git tags" command should display latest tags.

e.g. "git tags -5" will display last 5 tags only.

Similar behavior to "git log -5"

Thanks,
Halil

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Feature Request: Passing a number as an option to git tags for displaying latest tags
  2015-07-22 17:17 Feature Request: Passing a number as an option to git tags for displaying latest tags Halil Öztürk
@ 2015-07-22 18:36 ` Jacob Keller
  2015-07-22 18:58 ` Andreas Schwab
  2015-07-22 19:17 ` Junio C Hamano
  2 siblings, 0 replies; 10+ messages in thread
From: Jacob Keller @ 2015-07-22 18:36 UTC (permalink / raw)
  To: Halil Öztürk; +Cc: git

On Wed, Jul 22, 2015 at 10:17 AM, Halil Öztürk <halilozturk55@gmail.com> wrote:
> Hello team,
>
> Passing a number as an option to "git tags" command should display latest tags.
>
> e.g. "git tags -5" will display last 5 tags only.
>
> Similar behavior to "git log -5"
>
> Thanks,
> Halil
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


While interesting, this would only really work for annotated tags. How
would you define order? tags are normally shown in sorted lexical
order (or version-order if you pass the --sort parameter).
Non-annotated tags do not contain the date time, and using the
commit's date information may not be accurate. While it is possible to
say show "the 5 most recent tags on a particular branch of history"
that would be using the log to determine this.

What exactly would you expect the behavior to be with tags? That might
help figure out what could be done instead.

Regards,
Jake

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Feature Request: Passing a number as an option to git tags for displaying latest tags
  2015-07-22 17:17 Feature Request: Passing a number as an option to git tags for displaying latest tags Halil Öztürk
  2015-07-22 18:36 ` Jacob Keller
@ 2015-07-22 18:58 ` Andreas Schwab
  2015-07-22 19:17 ` Junio C Hamano
  2 siblings, 0 replies; 10+ messages in thread
From: Andreas Schwab @ 2015-07-22 18:58 UTC (permalink / raw)
  To: Halil Öztürk; +Cc: git

Halil Öztürk <halilozturk55@gmail.com> writes:

> Passing a number as an option to "git tags" command should display latest tags.

How do you define "the latest tags"?  By tag creation?  Lightweight
tags don't have any kind of creation time attached.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Feature Request: Passing a number as an option to git tags for displaying latest tags
  2015-07-22 17:17 Feature Request: Passing a number as an option to git tags for displaying latest tags Halil Öztürk
  2015-07-22 18:36 ` Jacob Keller
  2015-07-22 18:58 ` Andreas Schwab
@ 2015-07-22 19:17 ` Junio C Hamano
  2015-07-22 19:20   ` Junio C Hamano
  2 siblings, 1 reply; 10+ messages in thread
From: Junio C Hamano @ 2015-07-22 19:17 UTC (permalink / raw)
  To: Halil Öztürk; +Cc: git, Karthik Nayak

Halil Öztürk <halilozturk55@gmail.com> writes:

> Passing a number as an option to "git tags" command should display latest tags.
>
> e.g. "git tags -5" will display last 5 tags only.

I think this conflates two unrelated things.

 - Ordering tags not by refnames (i.e. default) but by "time".

 - Limiting the output by count.

The latter is what "| head -n 5" and/or "| tail -n 5" are for, so it
would be at most "nice to have"; I am indifferent in the sense that
I won't work on it, but I'd take a look if somebody sent a patch
that was cleanly done.

The former, sort by "time", is interesting, but you need to define
what to do with various corner cases.  For example, some people may
be have one or more of the following desires:

 * My project did not use tags for a long time, and started using it
   recently starting from v1.1.0.  The first release only said
   "Frotz version 1.0.0" in its commit log message.  I retroactively
   did "git tag -s -m 'Frotz 1.1.0' v1.1.0" on that commit.

   In such a case, it is likely that I would want the sorting done
   based on the committer date on the underlying commit, not the
   tag's tagger date.

 * When a bug is found, it is customary in my project to add a
   "break-<something>" tag to the commit that introduces the bug
   (and "fix-<something>" tag to the commit that fixes it).

   When I want to find recently discovered breakages, I want the
   tags whose names match "break-*" sorted by tagger dates, not the
   underlying commit's committer dates.

The necessary ordering machinery to do the above already exists in
"for-each-ref".  There is a GSoC project that works to unify various
features spread across "for-each-ref", "branch -l" and "tag -l" and
make them available to all of the three.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Feature Request: Passing a number as an option to git tags for displaying latest tags
  2015-07-22 19:17 ` Junio C Hamano
@ 2015-07-22 19:20   ` Junio C Hamano
  2015-07-23  9:39     ` Michael J Gruber
  0 siblings, 1 reply; 10+ messages in thread
From: Junio C Hamano @ 2015-07-22 19:20 UTC (permalink / raw)
  To: Halil Öztürk; +Cc: git, Karthik Nayak

Junio C Hamano <gitster@pobox.com> writes:

> The former, sort by "time", is interesting, but you need to define
> what to do with various corner cases.  For example, some people may
> have one or more of the following desires:
>
>  * My project did not use tags for a long time, and started using it
>    recently starting from v1.1.0.  The first release only said
>    "Frotz version 1.0.0" in its commit log message.  I retroactively
>    did "git tag -s -m 'Frotz 1.1.0' v1.1.0" on that commit.

Obviously, I meant "git tag -s -m 'Frotz 1.0.0' v1.0.0" here.

>    In such a case, it is likely that I would want the sorting done
>    based on the committer date on the underlying commit, not the
>    tag's tagger date.
>
>  * When a bug is found, it is customary in my project to add a
>    "break-<something>" tag to the commit that introduces the bug
>    (and "fix-<something>" tag to the commit that fixes it).
>
>    When I want to find recently discovered breakages, I want the
>    tags whose names match "break-*" sorted by tagger dates, not the
>    underlying commit's committer dates.

Another use case may be one in which older tags are interesting.  In
other words, you need to be able to sort in reverse, too.

> The necessary ordering machinery to do the above already exists in
> "for-each-ref".  There is a GSoC project that works to unify various
> features spread across "for-each-ref", "branch -l" and "tag -l" and
> make them available to all of the three.

And the above is still true even with reverse-order use case.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Feature Request: Passing a number as an option to git tags for displaying latest tags
  2015-07-22 19:20   ` Junio C Hamano
@ 2015-07-23  9:39     ` Michael J Gruber
  2015-07-23 17:21       ` Jacob Keller
  0 siblings, 1 reply; 10+ messages in thread
From: Michael J Gruber @ 2015-07-23  9:39 UTC (permalink / raw)
  To: Junio C Hamano, Halil Öztürk; +Cc: git, Karthik Nayak

Junio C Hamano venit, vidit, dixit 22.07.2015 21:20:
> Junio C Hamano <gitster@pobox.com> writes:
> 
>> The former, sort by "time", is interesting, but you need to define
>> what to do with various corner cases.  For example, some people may
>> have one or more of the following desires:
>>
>>  * My project did not use tags for a long time, and started using it
>>    recently starting from v1.1.0.  The first release only said
>>    "Frotz version 1.0.0" in its commit log message.  I retroactively
>>    did "git tag -s -m 'Frotz 1.1.0' v1.1.0" on that commit.
> 
> Obviously, I meant "git tag -s -m 'Frotz 1.0.0' v1.0.0" here.
> 
>>    In such a case, it is likely that I would want the sorting done
>>    based on the committer date on the underlying commit, not the
>>    tag's tagger date.
>>
>>  * When a bug is found, it is customary in my project to add a
>>    "break-<something>" tag to the commit that introduces the bug
>>    (and "fix-<something>" tag to the commit that fixes it).
>>
>>    When I want to find recently discovered breakages, I want the
>>    tags whose names match "break-*" sorted by tagger dates, not the
>>    underlying commit's committer dates.
> 
> Another use case may be one in which older tags are interesting.  In
> other words, you need to be able to sort in reverse, too.
> 
>> The necessary ordering machinery to do the above already exists in
>> "for-each-ref".  There is a GSoC project that works to unify various
>> features spread across "for-each-ref", "branch -l" and "tag -l" and
>> make them available to all of the three.
> 
> And the above is still true even with reverse-order use case.
> 

While not quite being intended for that purpose,

git log --oneline --decorate --simplify-by-decoration [-n] --tags

(or with a custom format instead of "--oneline --decorate") may come
close to what you want.[*]

Michael

[*] As Linus once described it (iirc): oooh, evil. I like it.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Feature Request: Passing a number as an option to git tags for displaying latest tags
  2015-07-23  9:39     ` Michael J Gruber
@ 2015-07-23 17:21       ` Jacob Keller
  2015-07-23 18:01         ` Junio C Hamano
  0 siblings, 1 reply; 10+ messages in thread
From: Jacob Keller @ 2015-07-23 17:21 UTC (permalink / raw)
  To: Michael J Gruber
  Cc: Junio C Hamano, Halil Öztürk, git, Karthik Nayak

On Thu, Jul 23, 2015 at 2:39 AM, Michael J Gruber
<git@drmicha.warpmail.net> wrote:
>
> While not quite being intended for that purpose,
>
> git log --oneline --decorate --simplify-by-decoration [-n] --tags
>
> (or with a custom format instead of "--oneline --decorate") may come
> close to what you want.[*]
>
> Michael
>
> [*] As Linus once described it (iirc): oooh, evil. I like it.
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Yep, that's pretty much how a build system I've had to use does it.
Sadly, this is quite slow, and I'm not sure if doing it built into the
tag via for-each-ref would be faster? I mean obviously having to look
at each commit is slower than just the tag name, but it might be
faster than parsing through the log process? Though the log output has
the advantage that it only shows you tags "on" a given branch.

Regards,
Jake

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Feature Request: Passing a number as an option to git tags for displaying latest tags
  2015-07-23 17:21       ` Jacob Keller
@ 2015-07-23 18:01         ` Junio C Hamano
  2015-07-23 18:12           ` Jacob Keller
  0 siblings, 1 reply; 10+ messages in thread
From: Junio C Hamano @ 2015-07-23 18:01 UTC (permalink / raw)
  To: Jacob Keller; +Cc: Michael J Gruber, Halil Öztürk, git, Karthik Nayak

Jacob Keller <jacob.keller@gmail.com> writes:

> Yep, that's pretty much how a build system I've had to use does it.
> Sadly, this is quite slow, and I'm not sure if doing it built into the
> tag via for-each-ref would be faster?

Is the description in "git for-each-ref --help" somehow unreadable?

       An example directly producing formatted text. Show the most
       recent 3 tagged commits:

           #!/bin/sh

           git for-each-ref --count=3 --sort='-*authordate' \
           --format='From: %(*authorname) %(*authoremail)
           Subject: %(*subject)
           Date: %(*authordate)
           Ref: %(*refname)

           %(*body)
           ' 'refs/tags'

If you only need the name of the ref, you can use a lot simpler
format string, e.g.

    git for-each-ref --count=3 --sort='-*authordate' \
      --format='%(refname:short)' refs/tags

    git for-each-ref --count=3 --sort='-taggerdate' \
      --format='%(refname:short)' refs/tags

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Feature Request: Passing a number as an option to git tags for displaying latest tags
  2015-07-23 18:01         ` Junio C Hamano
@ 2015-07-23 18:12           ` Jacob Keller
  2015-07-23 18:21             ` Junio C Hamano
  0 siblings, 1 reply; 10+ messages in thread
From: Jacob Keller @ 2015-07-23 18:12 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Michael J Gruber, Halil Öztürk, git, Karthik Nayak

On Thu, Jul 23, 2015 at 11:01 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Jacob Keller <jacob.keller@gmail.com> writes:
>
>> Yep, that's pretty much how a build system I've had to use does it.
>> Sadly, this is quite slow, and I'm not sure if doing it built into the
>> tag via for-each-ref would be faster?
>
> Is the description in "git for-each-ref --help" somehow unreadable?
>
>        An example directly producing formatted text. Show the most
>        recent 3 tagged commits:
>
>            #!/bin/sh
>
>            git for-each-ref --count=3 --sort='-*authordate' \
>            --format='From: %(*authorname) %(*authoremail)
>            Subject: %(*subject)
>            Date: %(*authordate)
>            Ref: %(*refname)
>
>            %(*body)
>            ' 'refs/tags'
>
> If you only need the name of the ref, you can use a lot simpler
> format string, e.g.
>
>     git for-each-ref --count=3 --sort='-*authordate' \
>       --format='%(refname:short)' refs/tags
>
>     git for-each-ref --count=3 --sort='-taggerdate' \
>       --format='%(refname:short)' refs/tags
>

That's significantly better than what this system does, but sadly the
team that owns it doesn't exactly understand git. Pretty sure they
tend to just use whatever scriptlet they got working, which happens to
be based on log...  I've tried to help them, but generally hasn't been
a successful relationship there.

Regards,
Jake

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Feature Request: Passing a number as an option to git tags for displaying latest tags
  2015-07-23 18:12           ` Jacob Keller
@ 2015-07-23 18:21             ` Junio C Hamano
  0 siblings, 0 replies; 10+ messages in thread
From: Junio C Hamano @ 2015-07-23 18:21 UTC (permalink / raw)
  To: Jacob Keller; +Cc: Michael J Gruber, Halil Öztürk, git, Karthik Nayak

Jacob Keller <jacob.keller@gmail.com> writes:

> On Thu, Jul 23, 2015 at 11:01 AM, Junio C Hamano <gitster@pobox.com> wrote:
>> Jacob Keller <jacob.keller@gmail.com> writes:
>>
>>> Yep, that's pretty much how a build system I've had to use does it.
>>> Sadly, this is quite slow, and I'm not sure if doing it built into the
>>> tag via for-each-ref would be faster?
>>
>> Is the description in "git for-each-ref --help" somehow unreadable?
>> ...
>> If you only need the name of the ref, you can use a lot simpler
>> format string, e.g.
>>
>>     git for-each-ref --count=3 --sort='-*authordate' \
>>       --format='%(refname:short)' refs/tags
>>
>>     git for-each-ref --count=3 --sort='-taggerdate' \
>>       --format='%(refname:short)' refs/tags
>>
>
> That's significantly better than what this system does, but sadly the
> team that owns it doesn't exactly understand git. Pretty sure they
> tend to just use whatever scriptlet they got working, which happens to
> be based on log...  I've tried to help them, but generally hasn't been
> a successful relationship there.

If your build people refuse to switch from an unreliable way of
parsing "log" output that is not meant for machine consumption, then
it wouldn't make any difference what the answer to your "I'm not
sure if doing it built into ... be faster?" X-<.

By the way, I was referring to that question, pointing out that you
do not have be wondering.  It is already there, and as I said a few
messages ago already in this thread, the cross-pollination among
"for-each-ref", "branch -l" and "tag -l" is happening as part of
this year's GSoC program.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-07-23 18:21 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-22 17:17 Feature Request: Passing a number as an option to git tags for displaying latest tags Halil Öztürk
2015-07-22 18:36 ` Jacob Keller
2015-07-22 18:58 ` Andreas Schwab
2015-07-22 19:17 ` Junio C Hamano
2015-07-22 19:20   ` Junio C Hamano
2015-07-23  9:39     ` Michael J Gruber
2015-07-23 17:21       ` Jacob Keller
2015-07-23 18:01         ` Junio C Hamano
2015-07-23 18:12           ` Jacob Keller
2015-07-23 18:21             ` Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).