diff options
author | Junio C Hamano <gitster@pobox.com> | 2020-07-15 16:29:43 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-07-15 16:29:43 -0700 |
commit | 05920f041a57ac9ee86a8615cfca414450e65365 (patch) | |
tree | 0c79e5f67c6baa22073d8aaf8c9b57011c2adedd | |
parent | Git 2.28-rc0 (diff) | |
parent | Wait for child on signal death for aliases to externals (diff) | |
download | tgif-05920f041a57ac9ee86a8615cfca414450e65365.tar.xz |
Merge branch 'ta/wait-on-aliased-commands-upon-signal' into master
When an aliased command, whose output is piped to a pager by git,
gets killed by a signal, the pager got into a funny state, which
has been corrected (again).
* ta/wait-on-aliased-commands-upon-signal:
Wait for child on signal death for aliases to externals
Wait for child on signal death for aliases to builtins
-rw-r--r-- | git.c | 4 | ||||
-rw-r--r-- | run-command.c | 1 | ||||
-rw-r--r-- | run-command.h | 1 |
3 files changed, 5 insertions, 1 deletions
@@ -346,6 +346,8 @@ static int handle_alias(int *argcp, const char ***argv) commit_pager_choice(); child.use_shell = 1; + child.clean_on_exit = 1; + child.wait_after_clean = 1; child.trace2_child_class = "shell_alias"; argv_array_push(&child.args, alias_string + 1); argv_array_pushv(&child.args, (*argv) + 1); @@ -767,7 +769,7 @@ static int run_argv(int *argcp, const char ***argv) * OK to return. Otherwise, we just pass along the status code. */ i = run_command_v_opt_tr2(args.argv, RUN_SILENT_EXEC_FAILURE | - RUN_CLEAN_ON_EXIT, "git_alias"); + RUN_CLEAN_ON_EXIT | RUN_WAIT_AFTER_CLEAN, "git_alias"); if (i >= 0 || errno != ENOENT) exit(i); die("could not execute builtin %s", **argv); diff --git a/run-command.c b/run-command.c index 9b3a57d1e3..a735e380a9 100644 --- a/run-command.c +++ b/run-command.c @@ -1039,6 +1039,7 @@ int run_command_v_opt_cd_env_tr2(const char **argv, int opt, const char *dir, cmd.silent_exec_failure = opt & RUN_SILENT_EXEC_FAILURE ? 1 : 0; cmd.use_shell = opt & RUN_USING_SHELL ? 1 : 0; cmd.clean_on_exit = opt & RUN_CLEAN_ON_EXIT ? 1 : 0; + cmd.wait_after_clean = opt & RUN_WAIT_AFTER_CLEAN ? 1 : 0; cmd.dir = dir; cmd.env = env; cmd.trace2_child_class = tr2_class; diff --git a/run-command.h b/run-command.h index 191dfcdafe..ef3071a565 100644 --- a/run-command.h +++ b/run-command.h @@ -229,6 +229,7 @@ int run_auto_gc(int quiet); #define RUN_SILENT_EXEC_FAILURE 8 #define RUN_USING_SHELL 16 #define RUN_CLEAN_ON_EXIT 32 +#define RUN_WAIT_AFTER_CLEAN 64 /** * Convenience functions that encapsulate a sequence of |