aboutsummaryrefslogtreecommitdiff
path: root/hook.h
diff options
context:
space:
mode:
Diffstat (limited to 'hook.h')
-rw-r--r--hook.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/hook.h b/hook.h
index fea221f87d..e949f5d488 100644
--- a/hook.h
+++ b/hook.h
@@ -3,6 +3,7 @@
#include "strvec.h"
#include "run-command.h"
#include "string-list.h"
+#include "strmap.h"
struct repository;
@@ -10,17 +11,22 @@ struct repository;
* Represents a hook command to be run.
* Hooks can be:
* 1. "traditional" (found in the hooks directory)
- * 2. "configured" (defined in Git's configuration, not yet implemented).
+ * 2. "configured" (defined in Git's configuration via hook.<name>.event).
* The 'kind' field determines which part of the union 'u' is valid.
*/
struct hook {
enum {
HOOK_TRADITIONAL,
+ HOOK_CONFIGURED,
} kind;
union {
struct {
const char *path;
} traditional;
+ struct {
+ const char *friendly_name;
+ const char *command;
+ } configured;
} u;
/**
@@ -186,6 +192,12 @@ struct string_list *list_hooks(struct repository *r, const char *hookname,
void hook_list_clear(struct string_list *hooks, cb_data_free_fn cb_data_free);
/**
+ * Frees the hook configuration cache stored in `struct repository`.
+ * Called by repo_clear().
+ */
+void hook_cache_clear(struct strmap *cache);
+
+/**
* 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_*.