]> git.ipfire.org Git - thirdparty/git.git/commit
commit-graph: stop passing in redundant repository
authorPatrick Steinhardt <ps@pks.im>
Fri, 15 Aug 2025 05:49:52 +0000 (07:49 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 15 Aug 2025 16:34:48 +0000 (09:34 -0700)
commit7be9e410b22b3544e01d32f7bef8e6aa9516e152
treeddb18c3442e8a198df37123c0c1e1e1ffc3f4b16
parentddacfc7466707cbe462594052261647b43868825
commit-graph: stop passing in redundant repository

Many of the commit-graph related functions take in both a repository and
the object database source (directly or via `struct commit_graph`) for
which we are supposed to load such a commit-graph. In the best case this
information is simply redundant as the source already contains a
reference to its owning object database, which in turn has a reference
to its repository. In the worst case this information could even
mismatch when passing in a source that doesn't belong to the same
repository.

Refactor the code so that we only pass in the object database source in
those cases.

There is one exception though, namely `load_commit_graph_chain_fd_st()`,
which is responsible for loading a commit-graph chain. It is expected
that parts of the commit-graph chain aren't located in the same object
source as the chain file itself, but in a different one. Consequently,
this function doesn't work on the source level but on the database level
instead.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/commit-graph.c
commit-graph.c
commit-graph.h
t/helper/test-read-graph.c