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

Re: [PATCH] name-rev: test showing failure with non-monotonic commit dates

From
Jacob Keller <jacob.keller@gmail.com>
Date
Feb 14, 2022, 22:07 UTC
Message-ID
<CA+P7+xrN0zPWfxO1roWzR+MBHntTv8jr9OGdNcN9RPA=ebK24A@mail.gmail.com>
In-Reply-To
<xmqqr18515jr.fsf@gitster.g>
On Mon, Feb 14, 2022 at 1:50 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 14 quoted lines
>
> Jacob Keller <jacob.e.keller@intel.com> writes:
>
> > From: Jacob Keller <jacob.keller@gmail.com>
> >
> > If a commit in a sequence of linear history has a non-monotonically
> > increasing commit timestamp, git name-rev will not properly name the
> > commit.
> >
> > However, if you use --annotate-stdin then the commit does actually get
> > picked up and named properly.
>
> IIRC, this is to be expected.
>
Right. I figured this is somehow expected behavior...
Show 5 quoted lines
> When preparing to answer --annotate-stdin request, the command has
> to dig down to the root of the history, which would be too expensive
> in some repositories and wants to stop traversal early when it knows
> particular commits it needs to describe.
>
And this method of cutting the search relies on monotonic commit times right?

Is there any other method we could use (commit graph?) or perhaps to add an option so that you could go "git name-rev --no-cutoff <commid id>"? That would potentially allow working around this particular problem on repositories where its known to be problematic.

Alternatively is there some other way to apply the cutoff heuristic only in some cases? I get the sense this is intended to allow cutting off merged branches? i.e. not applying it when history is linear? I'd have to study it further but the existing algorithm seems to break because as it goes up the history it has found an "older" commit, so it stops trying to blame that line...?

> Dscho?  I think this is pretty much a fundamental part of the
> initial version added by bd321bcc (Add git-name-rev, 2005-10-26) and
> kept that way to this day, I think.
>

The reason we ended up with non-monotonic commit timestamps is a bit strange, and at least going forward I can remove the cause. However the history I deal with already has this, so perhaps a simple "--no-cutoff" option would be sufficient? This would allow getting the equivalent behavior to annotate-stdin without needing to script it myself.

Thanks, Jake

Previous: Junio C HamanoNext: Derrick Stolee
Message 3 of 10 in “name-rev: test showing failure with non-monotonic commit dates”
  1. name-rev: test showing failure with non-monotonic commit datesJacob Keller, Feb 14, 2022
  2. Junio C HamanoFeb 14, 2022
  3. Jacob KellerFeb 14, 2022
  4. Derrick StoleeFeb 15, 2022
  5. Keller, Jacob EFeb 15, 2022
  6. Junio C HamanoFeb 16, 2022
  7. Jacob KellerFeb 27, 2022
  8. Johannes SchindelinMar 9, 2022
  9. Ævar Arnfjörð BjarmasonFeb 15, 2022
  10. Keller, Jacob EFeb 16, 2022

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.