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

Re: topological index field for commit objects

From
Jakub Narębski <jnareb@gmail.com>
Date
Jun 29, 2016, 21:00 UTC
Message-ID
<577436DD.8050708@gmail.com>
In-Reply-To
<CAPc5daVC-+0Vr30L_pbcL0GN2OmnGm-+V4tE2WTos_vPRb_S1g@mail.gmail.com>
W dniu 2016-06-29 o 20:59, Junio C Hamano pisze:
Show 16 quoted lines
> On Wed, Jun 29, 2016 at 11:31 AM, Marc Strapetz
> <marc.strapetz@syntevo.com> wrote:
>
>> This is no RFE but rather recurring thoughts whenever I'm working with
>> commit graphs: a topological index attribute for commit objects would be
>> incredible useful. By "topological index" I mean a simple integer for which
>> following condition holds true:
>> 
>>  if commit C is part of the history of commit D,
>>    then C's topological index is smaller than D's index
>> 
>> This would allow topological sorting of commits (e.g. in queues) on the fly
>> and quickly give a "no" answer on the question whether D is part of
>> C's history. 
> 
> Look for "generation numbers" in the list archive, perhaps?

If I remember correctly the discussion, the problem by adding generation number to the commit object format was twofold (at least).

First there was a problem of backward compatibility, namely what to do with existing repositories, where commit objects do not have generation number. Objects in Git are immutable (and I think replacements mechanism wasn't invented yet - anyway too many replacements would slow down operations I guess).

Second objection was of philosophical nature: generation numbers duplicate (cache) information that is stored in the graph of revisions. Also, what if they get out of sync?

That is, if I remember the summary of that discussion correctly.
Also, generation numbers (graph level) only help with topological sorting;
for finding of two commits are connected (two nodes are connected) people
play with different ideas, for example FELINE index:
  http://openproceedings.org/EDBT/2014/paper_166.pdf
Nowadays there is also [compressed] bitmap index (if enabled), though I am
not sure if it is yet used to speed-up reachability queries
  http://githubengineering.com/counting-objects/
  https://www.eclipsecon.org/2013/sites/eclipsecon.org.2013/files/Scaling%20Up%20JGit%20-%20EclipseCon%202013.pdf
-- 
Jakub Narębski
Previous: Marc Strapetz
Message 31 of 31 in “topological index field for commit objects”
  1. Marc StrapetzJun 29, 2016
  2. Junio C HamanoJun 29, 2016
  3. Stefan BellerJun 29, 2016
  4. Junio C HamanoJun 29, 2016
  5. Jeff KingJun 29, 2016
  6. Jakub NarębskiJun 29, 2016
  7. Jeff KingJun 29, 2016
  8. Junio C HamanoJun 29, 2016
  9. Jeff KingJun 29, 2016
  10. Johannes SchindelinJul 5, 2016
  11. Jakub NarębskiJul 5, 2016
  12. Jakub NarębskiJun 30, 2016
  13. Linus TorvaldsJun 30, 2016
  14. Jakub NarębskiJun 30, 2016
  15. Mike HommeyJun 30, 2016
  16. Jeff KingJul 1, 2016
  17. Marc StrapetzJul 1, 2016
  18. Jakub NarębskiJul 1, 2016
  19. Junio C HamanoJul 1, 2016
  20. Jeff KingJul 1, 2016
  21. Jakub NarębskiJul 1, 2016
  22. Jakub NarębskiJul 20, 2016
  23. Jeff KingJul 20, 2016
  24. Jakub NarębskiFeb 4, 2017
  25. Jeff KingFeb 17, 2017
  26. Jakub NarębskiFeb 17, 2017
  27. Stefan BellerJun 29, 2016
  28. Stefan BellerJun 29, 2016
  29. Jeff KingJun 29, 2016
  30. Marc StrapetzJun 29, 2016
  31. Jakub NarębskiJun 29, 2016

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.