#ifndef HOOK_H #define HOOK_H #include "strvec.h" struct repository; struct run_hooks_opt { … }; #define RUN_HOOKS_OPT_INIT … struct hook_cb_data { … }; /* * Returns the path to the hook file, or NULL if the hook is missing * or disabled. Note that this points to static storage that will be * overwritten by further calls to find_hook and run_hook_*. */ const char *find_hook(struct repository *r, const char *name); /** * A boolean version of find_hook() */ int hook_exists(struct repository *r, const char *hookname); /** * Takes a `hook_name`, resolves it to a path with find_hook(), and * runs the hook for you with the options specified in "struct * run_hooks opt". Will free memory associated with the "struct run_hooks_opt". * * Returns the status code of the run hook, or a negative value on * error(). */ int run_hooks_opt(struct repository *r, const char *hook_name, struct run_hooks_opt *options); /** * A wrapper for run_hooks_opt() which provides a dummy "struct * run_hooks_opt" initialized with "RUN_HOOKS_OPT_INIT". */ int run_hooks(struct repository *r, const char *hook_name); /** * Like run_hooks(), a wrapper for run_hooks_opt(). * * In addition to the wrapping behavior provided by run_hooks(), this * wrapper takes a list of strings terminated by a NULL * argument. These things will be used as positional arguments to the * hook. This function behaves like the old run_hook_le() API. */ LAST_ARG_MUST_BE_NULL int run_hooks_l(struct repository *r, const char *hook_name, ...); #endif