strvec_push(&cmd->args, "--bitmap");
}
+static int repack_fill_midx_stdin_packs(struct child_process *cmd,
+ struct string_list *include)
+{
+ struct string_list_item *item;
+ FILE *in;
+ int ret;
+
+ cmd->in = -1;
+
+ strvec_push(&cmd->args, "--stdin-packs");
+
+ ret = start_command(cmd);
+ if (ret)
+ return ret;
+
+ in = xfdopen(cmd->in, "w");
+ for_each_string_list_item(item, include)
+ fprintf(in, "%s\n", item->string);
+ fclose(in);
+
+ return finish_command(cmd);
+}
+
int write_midx_included_packs(struct repack_write_midx_opts *opts)
{
struct child_process cmd = CHILD_PROCESS_INIT;
struct string_list include = STRING_LIST_INIT_DUP;
struct string_list_item *item;
struct packed_git *preferred = pack_geometry_preferred_pack(opts->geometry);
- FILE *in;
int ret = 0;
midx_included_packs(&include, opts);
if (!include.nr)
goto done;
- cmd.in = -1;
-
repack_prepare_midx_command(&cmd, opts, "write");
- strvec_push(&cmd.args, "--stdin-packs");
if (preferred)
strvec_pushf(&cmd.args, "--preferred-pack=%s",
strvec_pushf(&cmd.args, "--refs-snapshot=%s",
opts->refs_snapshot);
- ret = start_command(&cmd);
- if (ret)
- goto done;
-
- in = xfdopen(cmd.in, "w");
- for_each_string_list_item(item, &include)
- fprintf(in, "%s\n", item->string);
- fclose(in);
-
- ret = finish_command(&cmd);
+ ret = repack_fill_midx_stdin_packs(&cmd, &include);
done:
if (!ret && opts->write_bitmaps)
remove_redundant_bitmaps(&include, opts->packdir);