]> git.ipfire.org Git - thirdparty/git.git/commitdiff
hook.[ch]: move find_hook() from run-command.c to hook.c
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Sun, 26 Sep 2021 19:03:26 +0000 (21:03 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Sep 2021 16:44:54 +0000 (09:44 -0700)
Move the find_hook() function from run-command.c to a new hook.c
library. This change establishes a stub library that's pretty
pointless right now, but will see much wider use with Emily Shaffer's
upcoming "configuration-based hooks" series.

Eventually all the hook related code will live in hook.[ch]. Let's
start that process by moving the simple find_hook() function over
as-is.

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 files changed:
Makefile
builtin/am.c
builtin/bugreport.c
builtin/commit.c
builtin/merge.c
builtin/receive-pack.c
builtin/worktree.c
hook.c [new file with mode: 0644]
hook.h [new file with mode: 0644]
refs.c
run-command.c
run-command.h
sequencer.c
transport.c

index b9bf13239d05e219be28d205729d6438d00172d5..1f2b0205da5aedb5ae44d613873fe2831317b3b4 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -904,6 +904,7 @@ LIB_OBJS += hash-lookup.o
 LIB_OBJS += hashmap.o
 LIB_OBJS += help.o
 LIB_OBJS += hex.o
+LIB_OBJS += hook.o
 LIB_OBJS += ident.o
 LIB_OBJS += json-writer.o
 LIB_OBJS += kwset.o
index e4a0ff9cd7cc95d099d79502b9b48e6ee5b18b46..3527945a46726560d21f36e3fff271f85d97420c 100644 (file)
@@ -11,6 +11,7 @@
 #include "parse-options.h"
 #include "dir.h"
 #include "run-command.h"
+#include "hook.h"
 #include "quote.h"
 #include "tempfile.h"
 #include "lockfile.h"
index 06ed10dc92d5e59e81721b62293c011d66b2e186..c30a360d6955b9eda0d34537bc42f56e651d0a8a 100644 (file)
@@ -3,7 +3,7 @@
 #include "strbuf.h"
 #include "help.h"
 #include "compat/compiler.h"
-#include "run-command.h"
+#include "hook.h"
 
 
 static void get_system_info(struct strbuf *sys_info)
index e7320f66f957efdcb622079cdb1ef8d86b13b863..5359d961d228dddec6b05a4bbeacea44d81e8477 100644 (file)
@@ -19,6 +19,7 @@
 #include "revision.h"
 #include "wt-status.h"
 #include "run-command.h"
+#include "hook.h"
 #include "refs.h"
 #include "log-tree.h"
 #include "strbuf.h"
index 3fbdacc7db4d86893b52d2d82f3e729955ce10ed..fe664f6a863d56993bd7a6608c7cf55b53cfa169 100644 (file)
@@ -13,6 +13,7 @@
 #include "builtin.h"
 #include "lockfile.h"
 #include "run-command.h"
+#include "hook.h"
 #include "diff.h"
 #include "diff-merges.h"
 #include "refs.h"
index 48960a9575b3fed2784e876e7c3acb51861e2bc6..e3895aec622ea2988b944ec928ef6bf022680eb4 100644 (file)
@@ -7,6 +7,7 @@
 #include "pkt-line.h"
 #include "sideband.h"
 #include "run-command.h"
+#include "hook.h"
 #include "exec-cmd.h"
 #include "commit.h"
 #include "object.h"
index 0d0a80da61f1ee4944a8728091ac472389dc6255..d22ece93e1a80597e2a14950d7362c37b10c2945 100644 (file)
@@ -8,6 +8,7 @@
 #include "branch.h"
 #include "refs.h"
 #include "run-command.h"
+#include "hook.h"
 #include "sigchain.h"
 #include "submodule.h"
 #include "utf8.h"
diff --git a/hook.c b/hook.c
new file mode 100644 (file)
index 0000000..ba70b31
--- /dev/null
+++ b/hook.c
@@ -0,0 +1,37 @@
+#include "cache.h"
+#include "hook.h"
+#include "run-command.h"
+
+const char *find_hook(const char *name)
+{
+       static struct strbuf path = STRBUF_INIT;
+
+       strbuf_reset(&path);
+       strbuf_git_path(&path, "hooks/%s", name);
+       if (access(path.buf, X_OK) < 0) {
+               int err = errno;
+
+#ifdef STRIP_EXTENSION
+               strbuf_addstr(&path, STRIP_EXTENSION);
+               if (access(path.buf, X_OK) >= 0)
+                       return path.buf;
+               if (errno == EACCES)
+                       err = errno;
+#endif
+
+               if (err == EACCES && advice_enabled(ADVICE_IGNORED_HOOK)) {
+                       static struct string_list advise_given = STRING_LIST_INIT_DUP;
+
+                       if (!string_list_lookup(&advise_given, name)) {
+                               string_list_insert(&advise_given, name);
+                               advise(_("The '%s' hook was ignored because "
+                                        "it's not set as executable.\n"
+                                        "You can disable this warning with "
+                                        "`git config advice.ignoredHook false`."),
+                                      path.buf);
+                       }
+               }
+               return NULL;
+       }
+       return path.buf;
+}
diff --git a/hook.h b/hook.h
new file mode 100644 (file)
index 0000000..68624f1
--- /dev/null
+++ b/hook.h
@@ -0,0 +1,11 @@
+#ifndef HOOK_H
+#define HOOK_H
+
+/*
+ * 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(const char *name);
+
+#endif
diff --git a/refs.c b/refs.c
index 8b9f7c3a80a0f615e33a7d14cd505c27c3304491..6211692eaaea5396a1ca3938383e5d36e65ee90c 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -10,6 +10,7 @@
 #include "refs.h"
 #include "refs/refs-internal.h"
 #include "run-command.h"
+#include "hook.h"
 #include "object-store.h"
 #include "object.h"
 #include "tag.h"
index 04a07e6366ec7446befa78e9879e9a841983564b..e4862b8f46d0243e07e6f4c1e75a9452927ee940 100644 (file)
@@ -9,6 +9,7 @@
 #include "quote.h"
 #include "config.h"
 #include "packfile.h"
+#include "hook.h"
 
 void child_process_init(struct child_process *child)
 {
@@ -1322,40 +1323,6 @@ int async_with_fork(void)
 #endif
 }
 
-const char *find_hook(const char *name)
-{
-       static struct strbuf path = STRBUF_INIT;
-
-       strbuf_reset(&path);
-       strbuf_git_path(&path, "hooks/%s", name);
-       if (access(path.buf, X_OK) < 0) {
-               int err = errno;
-
-#ifdef STRIP_EXTENSION
-               strbuf_addstr(&path, STRIP_EXTENSION);
-               if (access(path.buf, X_OK) >= 0)
-                       return path.buf;
-               if (errno == EACCES)
-                       err = errno;
-#endif
-
-               if (err == EACCES && advice_enabled(ADVICE_IGNORED_HOOK)) {
-                       static struct string_list advise_given = STRING_LIST_INIT_DUP;
-
-                       if (!string_list_lookup(&advise_given, name)) {
-                               string_list_insert(&advise_given, name);
-                               advise(_("The '%s' hook was ignored because "
-                                        "it's not set as executable.\n"
-                                        "You can disable this warning with "
-                                        "`git config advice.ignoredHook false`."),
-                                      path.buf);
-                       }
-               }
-               return NULL;
-       }
-       return path.buf;
-}
-
 int run_hook_ve(const char *const *env, const char *name, va_list args)
 {
        struct child_process hook = CHILD_PROCESS_INIT;
index b9aff74914d776ba3d5ca0ec2f9186b3ae3c01bd..5e544acf4bc4aa7279866436521221311c42db3d 100644 (file)
@@ -224,13 +224,6 @@ int finish_command_in_signal(struct child_process *);
  */
 int run_command(struct child_process *);
 
-/*
- * 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(const char *name);
-
 /**
  * Run a hook.
  * The first argument is a pathname to an index file, or NULL
index 614d56f5e211eea24a165bc94fb9f00c72c9adcb..8ee6c4ac24006e82b973036df1bac1db7fdd502c 100644 (file)
@@ -8,6 +8,7 @@
 #include "sequencer.h"
 #include "tag.h"
 #include "run-command.h"
+#include "hook.h"
 #include "exec-cmd.h"
 #include "utf8.h"
 #include "cache-tree.h"
index b37664ba8709963f66befc0290718559f549966c..e4f1decae2063ce8981344c19626141c8bcd866c 100644 (file)
@@ -1,7 +1,7 @@
 #include "cache.h"
 #include "config.h"
 #include "transport.h"
-#include "run-command.h"
+#include "hook.h"
 #include "pkt-line.h"
 #include "fetch-pack.h"
 #include "remote.h"