Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> --- run-command.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/run-command.c b/run-command.c index 75abc47..8e188f6 100644 --- a/run-command.c +++ b/run-command.c @@ -765,12 +765,29 @@ int run_hook_ve(const char *const *env, const char *name, va_list args) struct child_process hook; struct argv_array argv = ARGV_ARRAY_INIT; const char *p; - int ret; + const char **mod_env = NULL; + int ret, i = 0; + struct strbuf buf = STRBUF_INIT; p = find_hook(name); if (!p) return 0; + if (!getenv(GIT_DIR_ENVIRONMENT)) { + if (env) + for (i = 0; env[i]; i++); + + mod_env = xcalloc(i + 2, sizeof(*mod_env)); + + if (env) + for (i = 0; env[i]; i++) + mod_env[i] = env[i]; + + strbuf_addf(&buf, "GIT_DIR=%s", get_git_dir()); + mod_env[i++] = buf.buf; + mod_env[i++] = NULL; + } + argv_array_push(&argv, p); while ((p = va_arg(args, const char *))) @@ -778,12 +795,15 @@ int run_hook_ve(const char *const *env, const char *name, va_list args) memset(&hook, 0, sizeof(hook)); hook.argv = argv.argv; - hook.env = env; + hook.env = mod_env ? mod_env : env; hook.no_stdin = 1; hook.stdout_to_stderr = 1; ret = run_command(&hook); argv_array_clear(&argv); + strbuf_release(&buf); + free(mod_env); + return ret; } -- 1.9.2+fc1.1.g5c924db -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html