]> git.ipfire.org Git - thirdparty/git.git/commitdiff
packfile: stop using linked MIDX list in `get_all_packs()`
authorPatrick Steinhardt <ps@pks.im>
Tue, 15 Jul 2025 11:29:23 +0000 (13:29 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 15 Jul 2025 19:07:30 +0000 (12:07 -0700)
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 <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
packfile.c

index 2d19c53ea96a7ec92937a3f98552ad47cf86c466..ff33692f4b599617b813ca7d629ccdaa16b04c16 100644 (file)
@@ -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);
        }