]> git.ipfire.org Git - thirdparty/git.git/blobdiff - hook.c
Merge branch 'hn/reftable-coverity-fixes'
[thirdparty/git.git] / hook.c
diff --git a/hook.c b/hook.c
index 1ad123422b26f640661e2cf076fd55c0c358316f..69a215b2c3c2c3b95a799a56325de9111873b39e 100644 (file)
--- a/hook.c
+++ b/hook.c
@@ -57,6 +57,7 @@ static int pick_next_hook(struct child_process *cp,
        strvec_pushv(&cp->env_array, hook_cb->options->env.v);
        cp->stdout_to_stderr = 1;
        cp->trace2_hook_name = hook_cb->hook_name;
+       cp->dir = hook_cb->options->dir;
 
        strvec_push(&cp->args, hook_path);
        strvec_pushv(&cp->args, hook_cb->options->args.v);
@@ -109,6 +110,7 @@ static void run_hooks_opt_clear(struct run_hooks_opt *options)
 
 int run_hooks_opt(const char *hook_name, struct run_hooks_opt *options)
 {
+       struct strbuf abs_path = STRBUF_INIT;
        struct hook_cb_data cb_data = {
                .rc = 0,
                .hook_name = hook_name,
@@ -130,6 +132,11 @@ int run_hooks_opt(const char *hook_name, struct run_hooks_opt *options)
        }
 
        cb_data.hook_path = hook_path;
+       if (options->dir) {
+               strbuf_add_absolute_path(&abs_path, hook_path);
+               cb_data.hook_path = abs_path.buf;
+       }
+
        run_processes_parallel_tr2(jobs,
                                   pick_next_hook,
                                   notify_start_failure,
@@ -139,6 +146,7 @@ int run_hooks_opt(const char *hook_name, struct run_hooks_opt *options)
                                   hook_name);
        ret = cb_data.rc;
 cleanup:
+       strbuf_release(&abs_path);
        run_hooks_opt_clear(options);
        return ret;
 }