summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Trygve Aaberge <trygveaa@gmail.com>2020-07-07 14:17:15 +0200
committerLibravatar Junio C Hamano <gitster@pobox.com>2020-07-07 13:15:13 -0700
commitc0d73a59c956ace5e02c9f0fab336ac4dbe64102 (patch)
tree5e511f8ce055d1ec618f2da8403e8345a433f205
parentWait for child on signal death for aliases to builtins (diff)
downloadtgif-c0d73a59c956ace5e02c9f0fab336ac4dbe64102.tar.xz
Wait for child on signal death for aliases to externals
When we are running an alias to an external command, we want to wait for that process to exit even after receiving ^C which normally kills the git process. This is useful when the process is ignoring SIGINT (which e.g. pagers often do), and then we don't want it to be killed. Having an alias which invokes a pager is probably not common, but it can be useful e.g. if you have an alias to a git command which uses a subshell as one of the arguments (in which case you have to use an external command, not an alias to a builtin). This patch is similar to the previous commit, but the previous commit fixed this only for aliases to builtins, while this commit does the same for aliases to external commands. In addition to waiting after clean like the previous commit, this also enables cleaning the child (that was already enabled for aliases to builtins before the previous commit), because wait_after_clean relies on it. Lastly, while the previous commit fixed a regression, I don't think this has ever worked properly. Signed-off-by: Trygve Aaberge <trygveaa@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--git.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/git.c b/git.c
index 9b8d3c92e6..c0698c7d45 100644
--- a/git.c
+++ b/git.c
@@ -345,6 +345,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);