git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Martin Ågren" <martin.agren@gmail.com>
To: "Fredrik Öberg" <fredrik@bakskuru.se>
Cc: git@vger.kernel.org, Jeff King <peff@peff.net>
Subject: Re: Bugreport: Prefix - is ignored when sorting (on committerdate)
Date: Tue, 10 Jan 2023 11:54:16 +0100	[thread overview]
Message-ID: <CAN0heSprKD35P-D7GTVQ20eRsj0AriYEA7iCDnrA9GuiwX0snw@mail.gmail.com> (raw)
In-Reply-To: <CALDp=1EVmQE2NZAd7ccAT0z=R=2S8FvyJzsPNrDeXwdJkEW3Lg@mail.gmail.com>

Hej Fredrik,

On Tue, 10 Jan 2023 at 10:50, Fredrik Öberg <fredrik@bakskuru.se> wrote:
> - Create a new repository
> - Add a new file to the repository and commit
> - Create a tag
> $ git tag -a TagOne -m ""
> - Update the file and commit the change
> - Create a tag
> $ git tag -a TagTwo -m ""
> - List tags by committerdate:
> $ git tag -l --sort=committerdate
> (oldest tag is listed first)
> - List tags by reversed committerdate:
> $ git tag -l --sort=-committerdate
> (oldest tag it still listed first)

> Anything else you want to add:
> The correct behaviour (reversing sort-order by using the minus-prefix)
> has been verified in
> version 2.11.0, 2.11.1, 2.14.2, 2.19.1, 2.19.2, 2.23.0 on CentOS 7.4
> version 2.31.1 and 2.35.1 on CentOS 7.4 contains the error
> version 2.34.1.windows.1 contains the error

This bisects to 7c5045fc18 ("ref-filter: apply fallback refname sort
only after all user sorts", 2020-05-03). I've cc-ed the author. That
commit does change the behavior for the kind of test repo you describe.

That said, you're using "committerdate" here. If you use "taggerdate"
(or "creatordate") I think you'll get the output you expect, even for
newer Git versions. Does that help?

Since you just have two commits in the reproducer, there's a strong
correlation between tag names and the timestamps involved. You actually
end up sorting by refname: because there is no committerdate for these
tags, the refnames are compared as a fallback. While the old code then
applied the reversal ('-') to *that*, the new code first fails to find
any difference, so doesn't have anything to reverse, then falls back to
comparing the refnames, at which point it doesn't consider reversing the
result.

All of this is based on my understanding. I could obviously be wrong.

I suppose it could be argued that the '-' should be applied to the
fallback as well, e.g., to uphold some sort of "using '-' should give
the same result as piping the whole thing through tac" (i.e., respecting
`s->reverse` in `compare_refs()`, if you're following along in
7c5045fc18). With multiple sort keys, some with '-' and some
without, we'd grab the '-' from the first key. It seems like that could
make sense, actually.

I might post such a patch, but as noted above, I think what you really
want to use is "taggerdate". I hope that helps.

Martin

  reply	other threads:[~2023-01-10 10:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-10  9:02 Bugreport: Prefix - is ignored when sorting (on committerdate) Fredrik Öberg
2023-01-10 10:54 ` Martin Ågren [this message]
2023-01-10 12:18   ` Jeff King
2023-01-10 13:05     ` Martin Ågren
2023-01-10 13:33       ` Fredrik Öberg
2023-01-10 13:47         ` Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAN0heSprKD35P-D7GTVQ20eRsj0AriYEA7iCDnrA9GuiwX0snw@mail.gmail.com \
    --to=martin.agren@gmail.com \
    --cc=fredrik@bakskuru.se \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).