index ef598c3e7053b8dd2859f4d582ce2917a804fe42..ed899512f9c4220f7d7a2b9e28e1a0eb23c06b8c 100644 (file)
--- a/git.c
+++ b/git.c
if (alias_string[0] == '!') {
const char **alias_argv;
int argc = *argcp, i;
if (alias_string[0] == '!') {
const char **alias_argv;
int argc = *argcp, i;
+ struct strbuf sb = STRBUF_INIT;
+ const char *env[2];
commit_pager_choice();
commit_pager_choice();
alias_argv[i] = (*argv)[i];
alias_argv[argc] = NULL;
alias_argv[i] = (*argv)[i];
alias_argv[argc] = NULL;
- ret = run_command_v_opt(alias_argv, RUN_USING_SHELL);
+ strbuf_addstr(&sb, "GIT_PREFIX=");
+ if (subdir)
+ strbuf_addstr(&sb, subdir);
+ env[0] = sb.buf;
+ env[1] = NULL;
+ ret = run_command_v_opt_cd_env(alias_argv, RUN_USING_SHELL, NULL, env);
+ strbuf_release(&sb);
if (ret >= 0) /* normal exit */
exit(ret);
if (ret >= 0) /* normal exit */
exit(ret);