From: Patrick Steinhardt Date: Tue, 15 Jul 2025 11:29:23 +0000 (+0200) Subject: packfile: stop using linked MIDX list in `get_all_packs()` X-Git-Tag: v2.51.0-rc0~19^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c620586fccf5a62e36a2d6cc96d0427f93f123fc;p=thirdparty%2Fgit.git packfile: stop using linked MIDX list in `get_all_packs()` Refactor `get_all_packs()` 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 Signed-off-by: Junio C Hamano --- diff --git a/packfile.c b/packfile.c index 2d19c53ea9..ff33692f4b 100644 --- a/packfile.c +++ b/packfile.c @@ -1086,12 +1086,13 @@ struct multi_pack_index *get_multi_pack_index(struct odb_source *source) struct packed_git *get_all_packs(struct repository *r) { - struct multi_pack_index *m; - prepare_packed_git(r); - for (m = r->objects->multi_pack_index; m; m = m->next) { - uint32_t i; - for (i = 0; i < m->num_packs + m->num_packs_in_base; i++) + + for (struct odb_source *source = r->objects->sources; source; source = source->next) { + struct multi_pack_index *m = source->midx; + if (!m) + continue; + for (uint32_t i = 0; i < m->num_packs + m->num_packs_in_base; i++) prepare_midx_pack(r, m, i); }