Re: [PATCH 0/6] odb: track commit graphs via object source
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Sep 26, 2025, 05:18 UTC
- Message-ID
- <aNYiIsUxR6yNQy_1@pks.im>
- In-Reply-To
- <xmqqo6qyfijl.fsf@gitster.g>
On Thu, Sep 25, 2025 at 12:17:50PM -0700, Junio C Hamano wrote:
Show 34 quoted lines
> Patrick Steinhardt <ps@pks.im> writes: > > > There is no inherent reason why a new backend would not be able to use > > the existing commit-graph infrastructure indeed. But there are reasons > > that specific backends may not want to do so. If objects are already > > stored in a database table, then it may make way more sense to store > > additional metadata that is currently stored in the commit-graph in a > > secondary database table instead of in the commit graph. > > ... > > This is roughly what I have in my head right now. And I realize that > > this information really should be sitting in a design document. I'm > > working on that, but still need to land two more patch series before I > > want to send such a patch series to the list. > > So is everybody happy with this line of thought that makes it > mandatory for each backend to decide and implement the commit-graph > support if they want to? > > My reading of the later part of Taylor's message[*] tells me that at > least Taylor does not agree with that position, and I am not sure > about this design choice, either. Surely, each backend can have its > own optimization, but looking at the way data from the commit-graph > and other auxiliary data files are used to optimize real operations > (like populating the essential fields of the commit object first > from the graph, only to read other things lazily from the object > database, or switching to completely different traversal machinery > when reachability bitmap is available), we cannot say that each > backend can store whatever side data they please and leave it at > that. The code paths that are supposed to be generic need to be > aware of these side data used for optimization to some degree, so > conceptually it is much cleaner (well, at least to my eyes, that is) > to declare that the auxiliary data files like commit-graph and > reachability bitmaps are defined on the objects in the repository, > no matter what backend is used to store them.
Quick update: I haven't found the time to reply to review feedback yet. I'll pick this topic up again in one or two weeks.
Patrick