diff mbox series

[16/31] receive-pack: convert push-to-checkout hook to hook.h

Message ID patch-16.31-a16163d4fb5-20210528T110515Z-avarab@gmail.com (mailing list archive)
State New, archived
Headers show
Series minimal restart of "config-based-hooks" | expand

Commit Message

Ævar Arnfjörð Bjarmason May 28, 2021, 12:11 p.m. UTC
From: Emily Shaffer <emilyshaffer@google.com>

By using hook.h instead of run-command.h to invoke push-to-checkout,
hooks can now be specified in the config as well as in the hookdir.
push-to-checkout is not called anywhere but in builtin/receive-pack.c.

This is the last user of the run_hook_le() API, so let's remove it
while we're at it, since run_hook_le() itself is the last user of
run_hook_ve() we can remove that too. The last direct user of
run_hook_le() was removed in the commit preceding this one.

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 builtin/receive-pack.c | 14 ++++++++++----
 run-command.c          | 32 --------------------------------
 run-command.h          | 16 ----------------
 3 files changed, 10 insertions(+), 52 deletions(-)

Comments

Felipe Contreras June 2, 2021, 12:51 a.m. UTC | #1
Ævar Arnfjörð Bjarmason wrote:
> From: Emily Shaffer <emilyshaffer@google.com>
> 
> By using hook.h instead of run-command.h to invoke push-to-checkout,
> hooks can now be specified in the config as well as in the hookdir.
> push-to-checkout is not called anywhere but in builtin/receive-pack.c.
> 
> This is the last user of the run_hook_le() API, so let's remove it
> while we're at it, since run_hook_le() itself is the last user of
> run_hook_ve() we can remove that too. The last direct user of
> run_hook_le() was removed in the commit preceding this one.

I think this should be split in two patches.

Yes, fundamentally there's not much of a difference, but if you are
already at 31 patches one that removes the last user and nother that
removes the API will make the progression a little bit cleaner.
diff mbox series

Patch

diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 1e0e04c62fc..5248228ebfe 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -1436,12 +1436,18 @@  static const char *push_to_checkout(unsigned char *hash,
 				    struct strvec *env,
 				    const char *work_tree)
 {
+	struct run_hooks_opt opt = RUN_HOOKS_OPT_INIT;
+
 	strvec_pushf(env, "GIT_WORK_TREE=%s", absolute_path(work_tree));
-	if (run_hook_le(env->v, push_to_checkout_hook,
-			hash_to_hex(hash), NULL))
+	strvec_pushv(&opt.env, env->v);
+	strvec_push(&opt.args, hash_to_hex(hash));
+	if (run_hooks(push_to_checkout_hook, &opt)) {
+		run_hooks_opt_clear(&opt);
 		return "push-to-checkout hook declined";
-	else
+	} else {
+		run_hooks_opt_clear(&opt);
 		return NULL;
+	}
 }
 
 static const char *update_worktree(unsigned char *sha1, const struct worktree *worktree)
@@ -1465,7 +1471,7 @@  static const char *update_worktree(unsigned char *sha1, const struct worktree *w
 
 	strvec_pushf(&env, "GIT_DIR=%s", absolute_path(git_dir));
 
-	if (!find_hook(push_to_checkout_hook))
+	if (!hook_exists(push_to_checkout_hook))
 		retval = push_to_deploy(sha1, &env, work_tree);
 	else
 		retval = push_to_checkout(sha1, &env, work_tree);
diff --git a/run-command.c b/run-command.c
index eecdef5a0c8..95c950a4a2b 100644
--- a/run-command.c
+++ b/run-command.c
@@ -1321,38 +1321,6 @@  int async_with_fork(void)
 #endif
 }
 
-static int run_hook_ve(const char *const *env, const char *name, va_list args)
-{
-	struct child_process hook = CHILD_PROCESS_INIT;
-	const char *p;
-
-	p = find_hook(name);
-	if (!p)
-		return 0;
-
-	strvec_push(&hook.args, p);
-	while ((p = va_arg(args, const char *)))
-		strvec_push(&hook.args, p);
-	hook.env = env;
-	hook.no_stdin = 1;
-	hook.stdout_to_stderr = 1;
-	hook.trace2_hook_name = name;
-
-	return run_command(&hook);
-}
-
-int run_hook_le(const char *const *env, const char *name, ...)
-{
-	va_list args;
-	int ret;
-
-	va_start(args, name);
-	ret = run_hook_ve(env, name, args);
-	va_end(args);
-
-	return ret;
-}
-
 struct io_pump {
 	/* initialized by caller */
 	int fd;
diff --git a/run-command.h b/run-command.h
index 24ab5d63c4c..748d4fc2a72 100644
--- a/run-command.h
+++ b/run-command.h
@@ -201,22 +201,6 @@  int finish_command_in_signal(struct child_process *);
  */
 int run_command(struct child_process *);
 
-/**
- * Run a hook.
- * The first argument is a pathname to an index file, or NULL
- * if the hook uses the default index file or no index is needed.
- * The second argument is the name of the hook.
- * The further arguments correspond to the hook arguments.
- * The last argument has to be NULL to terminate the arguments list.
- * If the hook does not exist or is not executable, the return
- * value will be zero.
- * If it is executable, the hook will be executed and the exit
- * status of the hook is returned.
- * On execution, .stdout_to_stderr and .no_stdin will be set.
- */
-LAST_ARG_MUST_BE_NULL
-int run_hook_le(const char *const *env, const char *name, ...);
-
 /*
  * Trigger an auto-gc
  */