repack-midx: factor out `repack_prepare_midx_command()`

The `write_midx_included_packs()` function assembles and executes a
`git multi-pack-index write` command, constructing the argument list
inline.

Future commits will introduce additional callers that need to construct
similar `git multi-pack-index` commands (for both `write` and `compact`
subcommands), so extract the common portions of the command setup into a
reusable `repack_prepare_midx_command()` helper.

The extracted helper sets `git_cmd`, pushes `multi-pack-index` and a
subcommand, and handles `--progress`/`--no-progress` and `--bitmap`
flags. The remaining arguments that are specific to the `write`
subcommand (such as `--stdin-packs`) are left to the caller.

No functional changes are included in this patch.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
main
Taylor Blau 2026-05-19 11:58:03 -04:00 committed by Junio C Hamano
parent ee6fb58238
commit 1505990d72
1 changed files with 19 additions and 11 deletions

View File

@ -275,6 +275,23 @@ static void remove_redundant_bitmaps(struct string_list *include,
strbuf_release(&path);
}

static void repack_prepare_midx_command(struct child_process *cmd,
struct repack_write_midx_opts *opts,
const char *subcommand)
{
cmd->git_cmd = 1;

strvec_pushl(&cmd->args, "multi-pack-index", subcommand, NULL);

if (opts->show_progress)
strvec_push(&cmd->args, "--progress");
else
strvec_push(&cmd->args, "--no-progress");

if (opts->write_bitmaps)
strvec_push(&cmd->args, "--bitmap");
}

int write_midx_included_packs(struct repack_write_midx_opts *opts)
{
struct child_process cmd = CHILD_PROCESS_INIT;
@ -289,18 +306,9 @@ int write_midx_included_packs(struct repack_write_midx_opts *opts)
goto done;

cmd.in = -1;
cmd.git_cmd = 1;

strvec_push(&cmd.args, "multi-pack-index");
strvec_pushl(&cmd.args, "write", "--stdin-packs", NULL);

if (opts->show_progress)
strvec_push(&cmd.args, "--progress");
else
strvec_push(&cmd.args, "--no-progress");

if (opts->write_bitmaps)
strvec_push(&cmd.args, "--bitmap");
repack_prepare_midx_command(&cmd, opts, "write");
strvec_push(&cmd.args, "--stdin-packs");

if (preferred)
strvec_pushf(&cmd.args, "--preferred-pack=%s",