mirror of
https://github.com/git/git.git
synced 2026-03-04 14:37:35 +01:00
Merge branch 'ar/run-command-hook-take-2' into next
Use the hook API to replace ad-hoc invocation of hook scripts via the run_command() API. * ar/run-command-hook-take-2: builtin/receive-pack: avoid spinning no-op sideband async threads
This commit is contained in:
@@ -934,6 +934,9 @@ static int run_receive_hook(struct command *commands,
|
||||
int saved_stderr = -1;
|
||||
int ret;
|
||||
|
||||
if (!hook_exists(the_repository, hook_name))
|
||||
return 0;
|
||||
|
||||
/* if there are no valid commands, don't invoke the hook at all. */
|
||||
while (iter && skip_broken && (iter->error_string || iter->did_not_exist))
|
||||
iter = iter->next;
|
||||
@@ -974,12 +977,16 @@ static int run_receive_hook(struct command *commands,
|
||||
|
||||
static int run_update_hook(struct command *cmd)
|
||||
{
|
||||
static const char hook_name[] = "update";
|
||||
struct run_hooks_opt opt = RUN_HOOKS_OPT_INIT;
|
||||
struct async sideband_async;
|
||||
int sideband_async_started = 0;
|
||||
int saved_stderr = -1;
|
||||
int code;
|
||||
|
||||
if (!hook_exists(the_repository, hook_name))
|
||||
return 0;
|
||||
|
||||
strvec_pushl(&opt.args,
|
||||
cmd->ref_name,
|
||||
oid_to_hex(&cmd->old_oid),
|
||||
@@ -988,7 +995,7 @@ static int run_update_hook(struct command *cmd)
|
||||
|
||||
prepare_sideband_async(&sideband_async, &saved_stderr, &sideband_async_started);
|
||||
|
||||
code = run_hooks_opt(the_repository, "update", &opt);
|
||||
code = run_hooks_opt(the_repository, hook_name, &opt);
|
||||
|
||||
finish_sideband_async(&sideband_async, saved_stderr, sideband_async_started);
|
||||
|
||||
@@ -1668,12 +1675,16 @@ out:
|
||||
|
||||
static void run_update_post_hook(struct command *commands)
|
||||
{
|
||||
static const char hook_name[] = "post-update";
|
||||
struct run_hooks_opt opt = RUN_HOOKS_OPT_INIT;
|
||||
struct async sideband_async;
|
||||
struct command *cmd;
|
||||
int sideband_async_started = 0;
|
||||
int saved_stderr = -1;
|
||||
|
||||
if (!hook_exists(the_repository, hook_name))
|
||||
return;
|
||||
|
||||
for (cmd = commands; cmd; cmd = cmd->next) {
|
||||
if (cmd->error_string || cmd->did_not_exist)
|
||||
continue;
|
||||
@@ -1684,7 +1695,7 @@ static void run_update_post_hook(struct command *commands)
|
||||
|
||||
prepare_sideband_async(&sideband_async, &saved_stderr, &sideband_async_started);
|
||||
|
||||
run_hooks_opt(the_repository, "post-update", &opt);
|
||||
run_hooks_opt(the_repository, hook_name, &opt);
|
||||
|
||||
finish_sideband_async(&sideband_async, saved_stderr, sideband_async_started);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user