Browse Source

sequencer (rebase -i): show only failed `git commit`'s output

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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Johannes Schindelin 8 years ago committed by Junio C Hamano
parent
commit
9a757c4970
  1. 18
      sequencer.c

18
sequencer.c

@ -610,6 +610,11 @@ static int run_git_commit(const char *defmsg, struct replay_opts *opts, @@ -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, @@ -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);
}

Loading…
Cancel
Save