]> git.ipfire.org Git - thirdparty/git.git/commitdiff
builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
authorTaylor Blau <me@ttaylorr.com>
Wed, 15 Oct 2025 22:29:19 +0000 (18:29 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 Oct 2025 17:08:56 +0000 (10:08 -0700)
Similar to the changes made in the previous commit to
`write_filtered_pack()`, teach `write_cruft_pack()` to take a
`write_pack_opts` struct and use that where possible.

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

index 45ce46989895dd2552bd47aa1ee1308c80a6b4fb..7295135ec214fb5122d97c4d8c6247f7c525a7d8 100644 (file)
@@ -221,9 +221,7 @@ static void combine_small_cruft_packs(FILE *in, size_t combine_cruft_below_size,
        strbuf_release(&buf);
 }
 
-static int write_cruft_pack(const struct pack_objects_args *args,
-                           const char *destination,
-                           const char *pack_prefix,
+static int write_cruft_pack(const struct write_pack_opts *opts,
                            const char *cruft_expiration,
                            unsigned long combine_cruft_below_size,
                            struct string_list *names,
@@ -234,9 +232,9 @@ static int write_cruft_pack(const struct pack_objects_args *args,
        FILE *in;
        int ret;
        const char *scratch;
-       int local = skip_prefix(destination, packdir, &scratch);
+       int local = skip_prefix(opts->destination, opts->packdir, &scratch);
 
-       prepare_pack_objects(&cmd, args, destination);
+       prepare_pack_objects(&cmd, opts->po_args, opts->destination);
 
        strvec_push(&cmd.args, "--cruft");
        if (cruft_expiration)
@@ -267,7 +265,7 @@ static int write_cruft_pack(const struct pack_objects_args *args,
         */
        in = xfdopen(cmd.in, "w");
        for_each_string_list_item(item, names)
-               fprintf(in, "%s-%s.pack\n", pack_prefix, item->string);
+               fprintf(in, "%s-%s.pack\n", opts->pack_prefix, item->string);
        if (combine_cruft_below_size && !cruft_expiration) {
                combine_small_cruft_packs(in, combine_cruft_below_size,
                                          existing);
@@ -599,6 +597,13 @@ int cmd_repack(int argc,
 
        if (pack_everything & PACK_CRUFT) {
                const char *pack_prefix = find_pack_prefix(packdir, packtmp);
+               struct write_pack_opts opts = {
+                       .po_args = &cruft_po_args,
+                       .destination = packtmp,
+                       .pack_prefix = pack_prefix,
+                       .packtmp = packtmp,
+                       .packdir = packdir,
+               };
 
                if (!cruft_po_args.window)
                        cruft_po_args.window = xstrdup_or_null(po_args.window);
@@ -615,8 +620,7 @@ int cmd_repack(int argc,
                cruft_po_args.quiet = po_args.quiet;
                cruft_po_args.delta_base_offset = po_args.delta_base_offset;
 
-               ret = write_cruft_pack(&cruft_po_args, packtmp, pack_prefix,
-                                      cruft_expiration,
+               ret = write_cruft_pack(&opts, cruft_expiration,
                                       combine_cruft_below_size, &names,
                                       &existing);
                if (ret)
@@ -651,11 +655,8 @@ int cmd_repack(int argc,
                         * pack, but rather removing all cruft packs from the
                         * main repository regardless of size.
                         */
-                       ret = write_cruft_pack(&cruft_po_args, expire_to,
-                                              pack_prefix,
-                                              NULL,
-                                              0ul,
-                                              &names,
+                       opts.destination = expire_to;
+                       ret = write_cruft_pack(&opts, NULL, 0ul, &names,
                                               &existing);
                        if (ret)
                                goto cleanup;