]> git.ipfire.org Git - thirdparty/git.git/commitdiff
midx-write.c: extract `fill_pack_from_midx()`
authorTaylor Blau <me@ttaylorr.com>
Sat, 6 Dec 2025 20:31:34 +0000 (15:31 -0500)
committerJunio C Hamano <gitster@pobox.com>
Sat, 6 Dec 2025 22:38:09 +0000 (07:38 +0900)
When filling packs from an existing MIDX, `fill_packs_from_midx()`
handles preparing a MIDX'd pack, and reading out its pack name from the
existing MIDX.

MIDX compaction will want to perform an identical operation, though the
caller will look quite different than `fill_packs_from_midx()`. To
reduce any future code duplication, extract `fill_pack_from_midx()`
from `fill_packs_from_midx()` to prepare to call our new helper function
in a future change.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
midx-write.c

index 4a1a16431a66b4384eb3e3be5dd6a425da58894e..5927691f6a0ed1008c20c7310747ebdccd14c9c6 100644 (file)
@@ -910,6 +910,21 @@ cleanup:
        return ret;
 }
 
+static int fill_pack_from_midx(struct pack_info *info,
+                              struct multi_pack_index *m,
+                              uint32_t pack_int_id)
+{
+       if (prepare_midx_pack(m, pack_int_id))
+               return error(_("could not load pack %d"), pack_int_id);
+
+       fill_pack_info(info,
+                      m->packs[pack_int_id - m->num_packs_in_base],
+                      m->pack_names[pack_int_id - m->num_packs_in_base],
+                      pack_int_id);
+
+       return 0;
+}
+
 static int fill_packs_from_midx(struct write_midx_context *ctx)
 {
        struct multi_pack_index *m;
@@ -918,13 +933,13 @@ static int fill_packs_from_midx(struct write_midx_context *ctx)
                uint32_t i;
 
                for (i = 0; i < m->num_packs; i++) {
-                       if (prepare_midx_pack(m, m->num_packs_in_base + i))
-                               return error(_("could not load pack"));
-
                        ALLOC_GROW(ctx->info, ctx->nr + 1, ctx->alloc);
-                       fill_pack_info(&ctx->info[ctx->nr++], m->packs[i],
-                                      m->pack_names[i],
-                                      m->num_packs_in_base + i);
+
+                       if (fill_pack_from_midx(&ctx->info[ctx->nr], m,
+                                               m->num_packs_in_base + i) < 0)
+                               return -1;
+
+                       ctx->nr++;
                }
        }
        return 0;