aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2025-07-15 13:29:22 +0200
committerJunio C Hamano <gitster@pobox.com>2025-07-15 12:07:29 -0700
commit7fc19983926af6aea1eb393a5deb7bb2fc3cd495 (patch)
tree9445a97637a13778b991fbfe2ffb09ace0834115
parent736bb725ebcd37d567455db2ac50524dea11223c (diff)
downloadgit-7fc19983926af6aea1eb393a5deb7bb2fc3cd495.tar.gz
packfile: stop using linked MIDX list in `find_pack_entry()`
Refactor `find_pack_entry()` so that we stop using the linked list of multi-pack indices. Note that there is no need to explicitly prepare alternates, and neither do we have to use `get_multi_pack_index()`, because `prepare_packed_git()` already takes care of populating all data structures for us. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--packfile.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/packfile.c b/packfile.c
index d0f38a0203..2d19c53ea9 100644
--- a/packfile.c
+++ b/packfile.c
@@ -2074,16 +2074,15 @@ static int fill_pack_entry(const struct object_id *oid,
int find_pack_entry(struct repository *r, const struct object_id *oid, struct pack_entry *e)
{
struct list_head *pos;
- struct multi_pack_index *m;
prepare_packed_git(r);
- if (!r->objects->packed_git && !r->objects->multi_pack_index)
- return 0;
- for (m = r->objects->multi_pack_index; m; m = m->next) {
- if (fill_midx_entry(r, oid, e, m))
+ for (struct odb_source *source = r->objects->sources; source; source = source->next)
+ if (source->midx && fill_midx_entry(r, oid, e, source->midx))
return 1;
- }
+
+ if (!r->objects->packed_git)
+ return 0;
list_for_each(pos, &r->objects->packed_git_mru) {
struct packed_git *p = list_entry(pos, struct packed_git, mru);