Web lists-archives.com

Re: [PATCH 2/2] rebase -i: silence stash apply




Hi Phillip,

On Thu, 18 May 2017, Phillip Wood wrote:

> diff --git a/sequencer.c b/sequencer.c
> index f8bc18badf1a3fb1b39656501c5a316e229968d2..311728a145dfc66e230334221a2610468239932d 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -1914,6 +1914,8 @@ static int apply_autostash(struct replay_opts *opts)
>  	strbuf_trim(&stash_sha1);
>  
>  	child.git_cmd = 1;
> +	child.no_stdout = 1;
> +	child.no_stderr = 1;
>  	argv_array_push(&child.args, "stash");
>  	argv_array_push(&child.args, "apply");
>  	argv_array_push(&child.args, stash_sha1.buf);

If I remember correctly, then the shell version prints the output in case
of an error.

We already imitated that behavior in `git commit`
(https://github.com/git-for-windows/git/blob/v2.13.0.windows.1/sequencer.c#L674-L684):

		/* hide stderr on success */
		struct strbuf buf = STRBUF_INIT;
		int rc = pipe_command(&cmd,
				      NULL, 0,
				      /* stdout is already redirected */
				      NULL, 0,
				      &buf, 0);
		if (rc)
			fputs(buf.buf, stderr);
		strbuf_release(&buf);

I think that would be the appropriate approach here, too.

Ciao,
Johannes

P.S.: it may be a very good idea to accompany this patch (as well as the
previous one) by a patch to the test suite to verify that the fixed code
does not regress.