[RFC/PATCH] handle_alias: provide GIT_CWD to !alias
- From
Michael J Gruber <git@drmicha.warpmail.net>
- Date
- Apr 13, 2011, 13:05 UTC
- Message-ID
- <e8c9aa9160f922f728d56387e5e86eb50220774f.1302699792.git.git@drmicha.warpmail.net>
- In-Reply-To
- <4DA59B27.50506@ge.infn.it>
Provide an environment variable GIT_CWD which contains the subdirectory from which a !alias was called since these cd to the to level directory before they are executed.
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> --- RFC for lack of tests and doc.
I would say this is something realistic and useful which can be done now, no matter how our efforts with !(top) and the like go.
git.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/git.c b/git.c index ef598c3..c8b9189 100644 --- a/git.c +++ b/git.c @@ -179,6 +179,8 @@ static int handle_alias(int *argcp, const char ***argv) if (alias_string[0] == '!') { const char **alias_argv; int argc = *argcp, i; + struct strbuf sb = STRBUF_INIT; + const char *env[2]; commit_pager_choice(); @@ -189,7 +191,13 @@ static int handle_alias(int *argcp, const char ***argv) alias_argv[i] = (*argv)[i]; alias_argv[argc] = NULL; - ret = run_command_v_opt(alias_argv, RUN_USING_SHELL); + strbuf_addstr(&sb, "GIT_CWD="); + 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);
-- 1.7.5.rc0.365.g23929a