]> git.ipfire.org Git - thirdparty/git.git/commitdiff
builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
authorTaylor Blau <me@ttaylorr.com>
Wed, 15 Oct 2025 22:29:08 +0000 (18:29 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 Oct 2025 17:08:56 +0000 (10:08 -0700)
Instead of passing individual parameters (in this case, "existing",
"names", and "geometry") to `midx_included_packs()`, pass a pointer to a
`repack_write_midx_opts` structure instead.

Besides reducing the number of parameters necessary to call the
`midx_included_packs` function, this refactoring sets us up nicely to
inline the call to `midx_included_packs()` into
`write_midx_included_packs()`, thus making the caller (in this case,
`cmd_repack()`) oblivious to the set of packs being written into the
MIDX.

In order to do this, `repack_write_midx_opts` has to keep track of the
set of existing packs, so add an additional field to point to that set.

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

index 271c86926898a0b287c217fc58098a48ef1c431d..a518a2b2f394cb47f4eb00d552c7f7a3cf0f37b6 100644 (file)
@@ -108,6 +108,7 @@ static int repack_config(const char *var, const char *value,
 }
 
 struct repack_write_midx_opts {
+       struct existing_packs *existing;
        struct string_list *include;
        struct pack_geometry *geometry;
        struct string_list *names;
@@ -188,10 +189,11 @@ static int midx_has_unknown_packs(struct string_list *include,
 }
 
 static void midx_included_packs(struct string_list *include,
-                               struct existing_packs *existing,
-                               struct string_list *names,
-                               struct pack_geometry *geometry)
+                               struct repack_write_midx_opts *opts)
 {
+       struct existing_packs *existing = opts->existing;
+       struct pack_geometry *geometry = opts->geometry;
+       struct string_list *names = opts->names;
        struct string_list_item *item;
        struct strbuf buf = STRBUF_INIT;
 
@@ -242,7 +244,7 @@ static void midx_included_packs(struct string_list *include,
                }
        }
 
-       if (midx_must_contain_cruft ||
+       if (opts->midx_must_contain_cruft ||
            midx_has_unknown_packs(include, geometry, existing)) {
                /*
                 * If there are one or more unknown pack(s) present (see
@@ -994,6 +996,7 @@ int cmd_repack(int argc,
        if (write_midx) {
                struct string_list include = STRING_LIST_INIT_DUP;
                struct repack_write_midx_opts opts = {
+                       .existing = &existing,
                        .include = &include,
                        .geometry = &geometry,
                        .names = &names,
@@ -1003,7 +1006,7 @@ int cmd_repack(int argc,
                        .write_bitmaps = write_bitmaps > 0,
                        .midx_must_contain_cruft = midx_must_contain_cruft
                };
-               midx_included_packs(&include, &existing, &names, &geometry);
+               midx_included_packs(&include, &opts);
 
                ret = write_midx_included_packs(&opts);