hook: allow overriding the ungroup option

When calling run_process_parallel() in run_hooks_opt(), the
ungroup option is currently hardcoded to .ungroup = 1.

This causes problems when ungrouping should be disabled, for
example when sideband-reading collated output from child hooks,
because sideband-reading and ungrouping are mutually exclusive.

Thus a new hook.h option is added to allow overriding.

The existing ungroup=1 behavior is preserved in the run_hooks()
API and the "hook run" command. We could modify these to take
an option if necessary, so I added two code comments there.

Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Adrian Ratiu
2025-12-26 14:23:30 +02:00
committed by Junio C Hamano
parent 7a7717427e
commit 857f047e40
4 changed files with 18 additions and 1 deletions

5
hook.c
View File

@@ -153,7 +153,7 @@ int run_hooks_opt(struct repository *r, const char *hook_name,
.tr2_label = hook_name,
.processes = 1,
.ungroup = 1,
.ungroup = options->ungroup,
.get_next_task = pick_next_hook,
.start_failure = notify_start_failure,
@@ -198,6 +198,9 @@ int run_hooks(struct repository *r, const char *hook_name)
{
struct run_hooks_opt opt = RUN_HOOKS_OPT_INIT;
/* All use-cases of this API require ungrouping. */
opt.ungroup = 1;
return run_hooks_opt(r, hook_name, &opt);
}