Allow aliases to expand to shell commands
If the alias expansion is prefixed with an exclamation point, treat it as a shell command which is run using system(3). Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:

committed by
Junio C Hamano

parent
f3dd015c91
commit
dfd42a3c62
10
git.c
10
git.c
@ -159,6 +159,16 @@ static int handle_alias(int *argcp, const char ***argv)
|
||||
alias_command = (*argv)[0];
|
||||
git_config(git_alias_config);
|
||||
if (alias_string) {
|
||||
if (alias_string[0] == '!') {
|
||||
trace_printf("trace: alias to shell cmd: %s => %s\n",
|
||||
alias_command, alias_string + 1);
|
||||
ret = system(alias_string + 1);
|
||||
if (ret >= 0 && WIFEXITED(ret) &&
|
||||
WEXITSTATUS(ret) != 127)
|
||||
exit(WEXITSTATUS(ret));
|
||||
die("Failed to run '%s' when expanding alias '%s'\n",
|
||||
alias_string + 1, alias_command);
|
||||
}
|
||||
count = split_cmdline(alias_string, &new_argv);
|
||||
option_count = handle_options(&new_argv, &count);
|
||||
memmove(new_argv - option_count, new_argv,
|
||||
|
Reference in New Issue
Block a user