[PATCH v2 5/7] packfile: stop using linked MIDX list in `find_pack_entry()`
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Jul 15, 2025, 11:29 UTC
- Message-ID
- <20250715-b4-pks-midx-via-odb-alternate-v2-5-b0ca0b4b516e@pks.im>
- In-Reply-To
- <20250715-b4-pks-midx-via-odb-alternate-v2-0-b0ca0b4b516e@pks.im>
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> --- packfile.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/packfile.c b/packfile.c index d0f38a02035..2d19c53ea96 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);
-- 2.50.1.404.ge9779f6434.dirty