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 builtinsmaint
						commit
						05920f041a
					
				
							
								
								
									
										4
									
								
								git.c
								
								
								
								
							
							
						
						
									
										4
									
								
								git.c
								
								
								
								
							|  | @ -346,6 +346,8 @@ static int handle_alias(int *argcp, const char ***argv) | ||||||
| 			commit_pager_choice(); | 			commit_pager_choice(); | ||||||
|  |  | ||||||
| 			child.use_shell = 1; | 			child.use_shell = 1; | ||||||
|  | 			child.clean_on_exit = 1; | ||||||
|  | 			child.wait_after_clean = 1; | ||||||
| 			child.trace2_child_class = "shell_alias"; | 			child.trace2_child_class = "shell_alias"; | ||||||
| 			argv_array_push(&child.args, alias_string + 1); | 			argv_array_push(&child.args, alias_string + 1); | ||||||
| 			argv_array_pushv(&child.args, (*argv) + 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. | 			 * OK to return. Otherwise, we just pass along the status code. | ||||||
| 			 */ | 			 */ | ||||||
| 			i = run_command_v_opt_tr2(args.argv, RUN_SILENT_EXEC_FAILURE | | 			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) | 			if (i >= 0 || errno != ENOENT) | ||||||
| 				exit(i); | 				exit(i); | ||||||
| 			die("could not execute builtin %s", **argv); | 			die("could not execute builtin %s", **argv); | ||||||
|  |  | ||||||
|  | @ -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.silent_exec_failure = opt & RUN_SILENT_EXEC_FAILURE ? 1 : 0; | ||||||
| 	cmd.use_shell = opt & RUN_USING_SHELL ? 1 : 0; | 	cmd.use_shell = opt & RUN_USING_SHELL ? 1 : 0; | ||||||
| 	cmd.clean_on_exit = opt & RUN_CLEAN_ON_EXIT ? 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.dir = dir; | ||||||
| 	cmd.env = env; | 	cmd.env = env; | ||||||
| 	cmd.trace2_child_class = tr2_class; | 	cmd.trace2_child_class = tr2_class; | ||||||
|  |  | ||||||
|  | @ -229,6 +229,7 @@ int run_auto_gc(int quiet); | ||||||
| #define RUN_SILENT_EXEC_FAILURE 8 | #define RUN_SILENT_EXEC_FAILURE 8 | ||||||
| #define RUN_USING_SHELL 16 | #define RUN_USING_SHELL 16 | ||||||
| #define RUN_CLEAN_ON_EXIT 32 | #define RUN_CLEAN_ON_EXIT 32 | ||||||
|  | #define RUN_WAIT_AFTER_CLEAN 64 | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Convenience functions that encapsulate a sequence of |  * Convenience functions that encapsulate a sequence of | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano