Re: [PATCH] tag: support --sort=version
- From
Jeff King <peff@peff.net>
- Date
- Feb 19, 2014, 14:09 UTC
- Message-ID
- <20140219140909.GA20128@sigill.intra.peff.net>
- In-Reply-To
- <1392817167-29802-1-git-send-email-pclouds@gmail.com>
On Wed, Feb 19, 2014 at 08:39:27PM +0700, Nguyễn Thái Ngọc Duy wrote:
> --sort=version sorts tags as versions. GNU extension's strverscmp is > used and no real compat implementation is provided so this is Linux only.
Sounds like a good goal.
I wonder, if we were to merge the for-each-ref and tag implementations[1], how this would integrate with for-each-ref's sorting. It can sort on arbitrary fields like "--sort=-*authordate". I think given the syntax you provide, this would fall out naturally as just another key (albeit a slightly magical one, as it is building on the %(refname:short) field but using a different comparator).
Would we ever want to version-sort any other field? Perhaps %(content:subject) for a tag? I'm not sure what would be the most natural way to specify that. Maybe "--sort=version:content:subject", with just "--version" as a synonym for "version:refname:short".
We don't need to do any of that immediately. This is mostly just me thinking aloud, to make sure we do not paint ourselves into a corner compatibility-wise.
-Peff
[1] I have patches which I really need to polish and send out that
combine the ref-selection code (so tag, branch, and for-each-ref all
know "--merged", "--contains", etc). I'd really like to combine the
sorting and formatting code, too, so everybody can use "--sort" and
"--format" with all of the associated fields.