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

Re: Revision walking, commit dates, slop

From
Derrick Stolee <stolee@gmail.com>
Date
May 22, 2019, 19:06 UTC
Message-ID
<f1f2c7f5-9b78-8404-2738-ab895a06c133@gmail.com>
In-Reply-To
<86lfyyny0p.fsf@gmail.com>
On 5/22/2019 2:29 PM, Jakub Narebski wrote:
Show 9 quoted lines
> Derrick Stolee <stolee@gmail.com> writes:
>> On 5/20/2019 7:27 PM, Jakub Narebski wrote:
> Restating it yet again:
> 
>    A.  corrected_date(C) = max(committer_date(C),
>                                max_P(committer_date(P) + offset(P)) + 1)
> 
>    B.  offset(C) = max(corrected_date(C) - committer_date(C),
>                        max_P(offset(P)) + 1)

The problem with this definition is that it "defines" the corrected date, and then _adjusts_ it by updating the offset. I consider

	corrected_date(C) = committer_date(C) + offset(C)
to be part of the definition. You could restate the definition as follows:
	corrected_date = max(committer_date(C) + max_P(offset(P)) + 1,
        	             max_P(corrected_date(P)))
or, equivalently
	corrected_date = max(committer_date(C) + max_P(offset(P)) + 1,
        	             max_P(committer_date(P) + offset(P)))
This definition, in a single step, satisfies the conditions below:
Show 6 quoted lines
> 
>> The final definition needs two conditions on the offset of a commit C for
>> every parent P:
>>
>>  1. committer_date(C) + offset(C) > committer_date(P) + offset(P)
>>  2. offset(C) > offset(P)

Plus, the "+ 1" in the first step takes into account that "0" is a special offset value in the commit-graph file format meaning "not computed".

> Well, we should check/test if performance benefits of "offset date"
> ("corrected date with rising offset") truly holds.

Yes, a full performance test will be required. I have full confidence that the monotonic offset requirement will have only positive effect. That is, it will not affect the case where committer-date was better than generation number, but will help the cases where all the committer-dates are equal.

Thanks, -Stolee

Previous: Jakub NarebskiNext: Jakub Narebski
Message 18 of 23 in “Revision walking, commit dates, slop”
  1. Mike HommeyMay 18, 2019
  2. SZEDER GáborMay 18, 2019
  3. Mike HommeyMay 18, 2019
  4. Mike HommeyMay 18, 2019
  5. SZEDER GáborMay 18, 2019
  6. Jakub NarebskiMay 19, 2019
  7. Derrick StoleeMay 20, 2019
  8. Jakub NarebskiMay 20, 2019
  9. Derrick StoleeMay 20, 2019
  10. Jakub NarebskiMay 20, 2019
  11. Jakub NarebskiMay 20, 2019
  12. Derrick StoleeMay 21, 2019
  13. Jonathan NiederMay 21, 2019
  14. revision: use generation for A..B --topo-order queriesDerrick Stolee, May 21, 2019
  15. 2/2 revision: keep topo-walk free of unintersting commitsDerrick Stolee, May 21, 2019
  16. Mike HommeyMay 22, 2019
  17. Jakub NarebskiMay 22, 2019
  18. Derrick StoleeMay 22, 2019
  19. Jakub NarebskiMay 23, 2019
  20. Jakub NarebskiJun 25, 2019
  21. Derrick StoleeJun 25, 2019
  22. commit-graph: generation v5 (backward compatible date ceiling)Jakub Narebski, Sep 18, 2019
  23. Derrick StoleeSep 18, 2019

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.