This series starts out by addressing the issue Jeff King noted in https://lore.kernel.org/git/Y0TXTl0gSBOFQa9B@xxxxxxxxxxxxxxxxxxxxxxx/; I.e. that by moving away from a "struct strvec" for run_command() variants we lose out on the "warn_unused_result" checking we'd get with the strvec_pushl() (ensuring the last element is NULL). The 3/10 here adds a run_command_l_opt() function, which provides an easy & safe one-shot API using warn_unused_result. The 10/10 here then adds a run_command_sv_opt(), which is a run_command_v_opt() taking a "struct strvec" that the API clears for the user after it's called. This makes a lot of one-shot "run this and free the strvec" users less verbose. Then, having converted to these helpers we had 1-2 users of other run_command_*() variants, which could be moved to using run_command() directly, and thus getting rid of supporting so much shorthand API variation. At the end of this series the in-tree use of the 3x helpers is (by number of *.c file occurances): 19 run_command_l_opt 15 run_command_v_opt 12 run_command_sv_opt More can be converted to run_command_{l,sv}_opt(), but I left out e.g. bisect--helper.c to avoid conflicts with anything in-flight. Ævar Arnfjörð Bjarmason (10): run-command.c: refactor run_command_*_tr2() to internal helpers merge: remove always-the-same "verbose" arguments run-command API: add and use a run_command_l_opt() am: use run_command_l_opt() for show_patch() run-command API docs: clarify & fleshen out run_command_v_opt*() docs run-command API: remove RUN_COMMAND_STDOUT_TO_STDERR flag run-command API & diff.c: remove run_command_v_opt_cd_env() run-command API & users: remove run_command_v_opt_tr2() gc: use strvec_pushf(), avoid redundant strbuf_detach() run-command API: add and use a run_command_sv_opt() add-interactive.c | 3 +- bisect.c | 19 +++++------ builtin/add.c | 6 ++-- builtin/am.c | 14 +++----- builtin/clone.c | 19 ++++------- builtin/difftool.c | 14 ++++---- builtin/gc.c | 49 +++++++++----------------- builtin/merge.c | 46 ++++++------------------- builtin/pull.c | 15 ++------ builtin/remote.c | 15 +++----- compat/mingw.c | 8 ++--- diff.c | 26 +++++++------- fsmonitor-ipc.c | 10 ++++-- git.c | 15 ++++---- ll-merge.c | 4 +-- merge.c | 3 +- run-command.c | 43 ++++++++++++----------- run-command.h | 74 +++++++++++++++++++++++++++------------- scalar.c | 6 +--- sequencer.c | 15 ++------ t/helper/test-fake-ssh.c | 4 +-- tmp-objdir.h | 6 ++-- 22 files changed, 177 insertions(+), 237 deletions(-) -- 2.38.0.1092.g8c0298861b0