aboutsummaryrefslogtreecommitdiff
path: root/hook.h
diff options
context:
space:
mode:
authorEmily Shaffer <emilyshaffer@google.com>2026-02-19 00:23:47 +0200
committerJunio C Hamano <gitster@pobox.com>2026-02-19 13:23:41 -0800
commit9fdaa6788924d4bb5ffc3a5908dae8a50e072f77 (patch)
tree326b5d2e0fc66a44080600b9f93c17f71ca3d778 /hook.h
parent4a36cb4c9f0f508db2e5dda75673e0d4b1242007 (diff)
downloadgit-9fdaa6788924d4bb5ffc3a5908dae8a50e072f77.tar.xz
hook: add "git hook list" command
The previous commit introduced an ability to run multiple commands for hook events and next commit will introduce the ability to define hooks from configs, in addition to the "traditional" hooks from the hookdir. Introduce a new command "git hook list" to make inspecting hooks easier both for users and for the tests we will add. Further commits will expand on this, e.g. by adding a -z output mode. Signed-off-by: Emily Shaffer <emilyshaffer@google.com> Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'hook.h')
-rw-r--r--hook.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/hook.h b/hook.h
index 3256d2dddb..fea221f87d 100644
--- a/hook.h
+++ b/hook.h
@@ -163,7 +163,29 @@ struct hook_cb_data {
struct run_hooks_opt *options;
};
-/*
+/**
+ * Provides a list of hook commands to run for the 'hookname' event.
+ *
+ * This function consolidates hooks from two sources:
+ * 1. The config-based hooks (not yet implemented).
+ * 2. The "traditional" hook found in the repository hooks directory
+ * (e.g., .git/hooks/pre-commit).
+ *
+ * The list is ordered by execution priority.
+ *
+ * The caller is responsible for freeing the memory of the returned list
+ * using string_list_clear() and free().
+ */
+struct string_list *list_hooks(struct repository *r, const char *hookname,
+ struct run_hooks_opt *options);
+
+/**
+ * Frees the memory allocated for the hook list, including the `struct hook`
+ * items and their internal state.
+ */
+void hook_list_clear(struct string_list *hooks, cb_data_free_fn cb_data_free);
+
+/**
* 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_*.