On Thu, Oct 27 2022, René Scharfe wrote: > Build argument list and environment of child processes by using > struct child_process and populating its members "args" and "env" > directly instead of maintaining separate strvecs and letting > run_command_v_opt() and friends populate these members. This is > simpler, shorter and slightly more efficient. General comment: Here you make 2x of the flags in in run-command.h orphans, we could just remove them here atomically. I.e. squash in part of 8/8. > static int similarity_index(struct diff_filepair *p) > diff --git a/git.c b/git.c > index ee7758dcb0..6662548986 100644 > --- a/git.c > +++ b/git.c > @@ -787,7 +787,7 @@ static int run_argv(int *argcp, const char ***argv) > if (!done_alias) > handle_builtin(*argcp, *argv); > else if (get_builtin(**argv)) { > - struct strvec args = STRVEC_INIT; > + struct child_process cmd = CHILD_PROCESS_INIT; > int i; > > /* > @@ -804,18 +804,21 @@ static int run_argv(int *argcp, const char ***argv) > > commit_pager_choice(); > > - strvec_push(&args, "git"); > + strvec_push(&cmd.args, "git"); > for (i = 0; i < *argcp; i++) > - strvec_push(&args, (*argv)[i]); > + strvec_push(&cmd.args, (*argv)[i]); > > - trace_argv_printf(args.v, "trace: exec:"); > + trace_argv_printf(cmd.args.v, "trace: exec:"); > > /* > * if we fail because the command is not found, it is > * OK to return. Otherwise, we just pass along the status code. > */ > - i = run_command_v_opt_tr2(args.v, RUN_SILENT_EXEC_FAILURE | > - RUN_CLEAN_ON_EXIT | RUN_WAIT_AFTER_CLEAN, "git_alias"); ^^ here, I didn't look carefully at the rest of the commits, but maybe there's similar squashes elsewhere...