[PATCH v3 33/38] sequencer (rebase -i): show only failed `git commit`'s output
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jan 2, 2017, 15:35 UTC
- Message-ID
- <f1ebd5e2de84d197326593a0c8018fd7e0446d6e.1483370556.git.johannes.schindelin@gmx.de>
- In-Reply-To
- <cover.1483370556.git.johannes.schindelin@gmx.de>
This is the behavior of the shell script version of the interactive rebase, by using the `output` function defined in `git-rebase.sh`.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- sequencer.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/sequencer.c b/sequencer.c index c7dc5a2ad4..a501dfce38 100644 --- a/sequencer.c +++ b/sequencer.c @@ -610,6 +610,11 @@ static int run_git_commit(const char *defmsg, struct replay_opts *opts, cmd.git_cmd = 1; if (is_rebase_i(opts)) { + if (!edit) { + cmd.stdout_to_stderr = 1; + cmd.err = -1; + } + if (read_env_script(&cmd.env_array)) { const char *gpg_opt = gpg_sign_opt_quoted(opts); @@ -644,6 +649,19 @@ static int run_git_commit(const char *defmsg, struct replay_opts *opts, if (opts->allow_empty_message) argv_array_push(&cmd.args, "--allow-empty-message"); + if (cmd.err == -1) { + /* 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); + return rc; + } return run_command(&cmd); }
-- 2.11.0.rc3.windows.1