]> git.ipfire.org Git - thirdparty/git.git/commitdiff
midx-write.c: extract `fill_packs_from_midx()`
authorTaylor Blau <me@ttaylorr.com>
Wed, 29 May 2024 22:55:36 +0000 (18:55 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 30 May 2024 20:43:51 +0000 (13:43 -0700)
When write_midx_internal() loads an existing MIDX, all packs are copied
forward into the new MIDX. Improve the readability of
write_midx_internal() by extracting this functionality out into a
separate function.

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

index 436a8703365ea50c652759c4a5556bab02a73a0c..1d165cef0d8858b2b7fac6ab25d6614e287d8648 100644 (file)
@@ -882,6 +882,40 @@ cleanup:
        return result;
 }
 
+static int fill_packs_from_midx(struct write_midx_context *ctx,
+                               const char *preferred_pack_name, uint32_t flags)
+{
+       uint32_t i;
+
+       for (i = 0; i < ctx->m->num_packs; i++) {
+               ALLOC_GROW(ctx->info, ctx->nr + 1, ctx->alloc);
+
+               if (flags & MIDX_WRITE_REV_INDEX || preferred_pack_name) {
+                       /*
+                        * If generating a reverse index, need to have
+                        * packed_git's loaded to compare their
+                        * mtimes and object count.
+                        *
+                        *
+                        * If a preferred pack is specified, need to
+                        * have packed_git's loaded to ensure the chosen
+                        * preferred pack has a non-zero object count.
+                        */
+                       if (prepare_midx_pack(the_repository, ctx->m, i))
+                               return error(_("could not load pack"));
+
+                       if (open_pack_index(ctx->m->packs[i]))
+                               die(_("could not open index for %s"),
+                                   ctx->m->packs[i]->pack_name);
+               }
+
+               fill_pack_info(&ctx->info[ctx->nr++], ctx->m->packs[i],
+                              ctx->m->pack_names[i], i);
+       }
+
+       return 0;
+}
+
 static int write_midx_internal(const char *object_dir,
                               struct string_list *packs_to_include,
                               struct string_list *packs_to_drop,
@@ -927,36 +961,10 @@ static int write_midx_internal(const char *object_dir,
        ctx.info = NULL;
        ALLOC_ARRAY(ctx.info, ctx.alloc);
 
-       if (ctx.m) {
-               for (i = 0; i < ctx.m->num_packs; i++) {
-                       ALLOC_GROW(ctx.info, ctx.nr + 1, ctx.alloc);
-
-                       if (flags & MIDX_WRITE_REV_INDEX ||
-                           preferred_pack_name) {
-                               /*
-                                * If generating a reverse index, need to have
-                                * packed_git's loaded to compare their
-                                * mtimes and object count.
-                                *
-                                * If a preferred pack is specified,
-                                * need to have packed_git's loaded to
-                                * ensure the chosen preferred pack has
-                                * a non-zero object count.
-                                */
-                               if (prepare_midx_pack(the_repository, ctx.m, i)) {
-                                       error(_("could not load pack"));
-                                       result = 1;
-                                       goto cleanup;
-                               }
-
-                               if (open_pack_index(ctx.m->packs[i]))
-                                       die(_("could not open index for %s"),
-                                           ctx.m->packs[i]->pack_name);
-                       }
-
-                       fill_pack_info(&ctx.info[ctx.nr++], ctx.m->packs[i],
-                                      ctx.m->pack_names[i], i);
-               }
+       if (ctx.m && fill_packs_from_midx(&ctx, preferred_pack_name,
+                                         flags) < 0) {
+               result = 1;
+               goto cleanup;
        }
 
        start_pack = ctx.nr;