Signed-off-by: Felipe Contreras <[email protected]>
---
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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html