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

Re: [PATCH 0/6] odb: track commit graphs via object source

From
Derrick Stolee <stolee@gmail.com>
Date
Sep 8, 2025, 14:46 UTC
Message-ID
<4e67fb02-bbbb-4cd8-9892-6f65b4f82b26@gmail.com>
In-Reply-To
<aL67U0-tw7O-y6_X@pks.im>
On 9/8/2025 7:17 AM, Patrick Steinhardt wrote:
> I (probably unsurprisingly :)) don't quite agree with this.

I think I can summarize the main point you seem to be making with this quote:

> So I would claim that the commit graph is specifically tied to the
> actual storage format of objects, and it's not at all obvious that it
> would need to exist if we had a different storage format.

I think I agree in principle, if you are saying "different storage format" means "different commit object information" which then means we are talking about a completely different object type that is not at all compatible with current Git.

You could store commit and object data in SQLite, in the cloud, or via plaintext files on disk. As long as the data is still representing commit objects as we format them today, the commit-graph is still a cache that can be used as a faster way to fill 'struct commit' objects in memory without navigating to that object database.

And you also mention that the commit-graph format itself could be more efficient. You're right! I think the way we did it within Azure DevOps is more efficient, because most of the commit walking algorithms are built working directly on the integer labels within the in-memory data structure instead of operating on commit structs. This allows for less overhead when loading the graph (it's already cached in memory) and when walking thousands of commits (we only translate to object IDs if they are important for the output). But this is all the more reason to keep the commit-graph structures outside of "the object store" since a "commit-graph database" can be implemented without being tied to an object store.

If you are saying "but our existing commit-graph format puts it in 'objects/info/commit-graph[s]'" then yes the storage of a commit-graph is tied to our storage of objects. But the way we interact with it in code is in some way a layer above that.

Thanks, -Stolee

Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 16 of 26 in “odb: track commit graphs via object source”
  1. 0/6 odb: track commit graphs via object sourcePatrick Steinhardt, Sep 4, 2025
  2. 1/6 blame: drop explicit check for commit graphPatrick Steinhardt, Sep 4, 2025
  3. Taylor BlauSep 11, 2025
  4. 2/6 revision: drop explicit check for commit graphPatrick Steinhardt, Sep 4, 2025
  5. Taylor BlauSep 11, 2025
  6. 3/6 commit-graph: return the prepared commit graph from `prepare_commit_graph()`Patrick Steinhardt, Sep 4, 2025
  7. Taylor BlauSep 11, 2025
  8. 4/6 commit-graph: return commit graph from `repo_find_commit_pos_in_graph()`Patrick Steinhardt, Sep 4, 2025
  9. Taylor BlauSep 11, 2025
  10. 5/6 commit-graph: pass graphs that are to be merged as parameterPatrick Steinhardt, Sep 4, 2025
  11. 6/6 odb: move commit-graph into the object sourcesPatrick Steinhardt, Sep 4, 2025
  12. Taylor BlauSep 11, 2025
  13. Junio C HamanoSep 4, 2025
  14. Derrick StoleeSep 5, 2025
  15. Patrick SteinhardtSep 8, 2025
  16. Derrick StoleeSep 8, 2025
  17. Patrick SteinhardtSep 10, 2025
  18. Junio C HamanoSep 25, 2025
  19. Patrick SteinhardtSep 26, 2025
  20. Patrick SteinhardtOct 2, 2025
  21. Patrick SteinhardtOct 2, 2025
  22. Junio C HamanoOct 2, 2025
  23. Derrick StoleeOct 3, 2025
  24. Taylor BlauSep 11, 2025
  25. Junio C HamanoSep 4, 2025
  26. Patrick SteinhardtSep 5, 2025

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.