mirror of
https://github.com/git/git.git
synced 2026-01-28 19:41:36 +00:00
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>
This commit is contained in:
18
sequencer.c
18
sequencer.c
@@ -657,6 +657,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);
|
||||
|
||||
@@ -691,6 +696,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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user