Re: [PATCH] rebase -x: don't print "Executing:" msgs with --quiet

Patrick Steinhardt
2024-08-16T08:26:40Z

On Fri, Aug 16, 2024 at 12:26:19AM -0300, Matheus Tavares wrote:
> `rebase --exec` doesn't obey --quiet and end up printing a few messages

s/end/ends/

> about the cmd being executed:

s/cmd/command/

> git rebase HEAD~3 --quiet --exec "printf foo >/dev/null"
> Executing: printf foo >/dev/null
> Executing: printf foo >/dev/null
> Executing: printf foo >/dev/null
>
> Let's fix that.
>
> Suggested-by: Rodrigo Siqueira <siqueirajordao@riseup.net>
> Signed-off-by: Matheus Tavares <matheus.tavb@gmail.com>
> ---
> sequencer.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/sequencer.c b/sequencer.c
> index 0291920f0b..d5824b41c1 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -3793,12 +3793,14 @@ static int error_failed_squash(struct repository *r,
> return error_with_patch(r, commit, subject, subject_len, opts, 1, 0);
> }
>
> -static int do_exec(struct repository *r, const char *command_line)
> +static int do_exec(struct repository *r, const char *command_line, int quiet)
> {
> struct child_process cmd = CHILD_PROCESS_INIT;
> int dirty, status;
>
> - fprintf(stderr, _("Executing: %s\n"), command_line);
> + if (!quiet) {
> + fprintf(stderr, _("Executing: %s\n"), command_line);
> + }

We don't typically use braces around single-line statements, so they
should be removed here.

> cmd.use_shell = 1;
> strvec_push(&cmd.args, command_line);
> strvec_push(&cmd.env, "GIT_CHERRY_PICK_HELP");
> @@ -5013,7 +5015,7 @@ static int pick_commits(struct repository *r,
> if (!opts->verbose)
> term_clear_line();
> *end_of_arg = '\0';
> - res = do_exec(r, arg);
> + res = do_exec(r, arg, opts->quiet);
> *end_of_arg = saved;
>
> if (res) {

Do we also want to add a test for this fix?

Other than those nits the fix looks obviously correct to me, thanks!

Patrick