[PATCH v7 17/17] hooks: allow callers to capture output
- From
Emily Shaffer <emilyshaffer@google.com>
- Date
- Dec 22, 2020, 00:02 UTC
- Message-ID
- <20201222000220.1491091-18-emilyshaffer@google.com>
- In-Reply-To
- <20201222000220.1491091-1-emilyshaffer@google.com>
Some server-side hooks will require capturing output to send over sideband instead of printing directly to stderr. Expose that capability.
Signed-off-by: Emily Shaffer <emilyshaffer@google.com> ---
Notes:
You can see this in practice in the conversions for some of the push hooks,
like 'receive-pack'.hook.c | 2 +- hook.h | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/hook.c b/hook.c index 1439322a29..dc241f7ec5 100644 --- a/hook.c +++ b/hook.c @@ -406,7 +406,7 @@ int run_hooks(const char *hookname, struct run_hooks_opt *options) pick_next_hook, notify_start_failure, options->feed_pipe, - NULL, + options->consume_sideband, notify_hook_finished, &cb_data, "hook", diff --git a/hook.h b/hook.h index 0ac83fa7ca..1e92379bb8 100644 --- a/hook.h +++ b/hook.h @@ -76,6 +76,14 @@ struct run_hooks_opt feed_pipe_fn feed_pipe; void *feed_pipe_ctx; + /* + * Populate this to capture output and prevent it from being printed to + * stderr. This will be passed directly through to + * run_command:run_parallel_processes(). See t/helper/test-run-command.c + * for an example. + */ + consume_sideband_fn consume_sideband; + /* Number of threads to parallelize across */ int jobs; @@ -103,6 +111,7 @@ struct hook_cb_data { .str_stdin = STRING_LIST_INIT_DUP, \ .feed_pipe = NULL, \ .feed_pipe_ctx = NULL, \ + .consume_sideband = NULL, \ .run_hookdir = configured_hookdir_opt() \ } @@ -115,6 +124,7 @@ struct hook_cb_data { .str_stdin = STRING_LIST_INIT_DUP, \ .feed_pipe = NULL, \ .feed_pipe_ctx = NULL, \ + .consume_sideband = NULL, \ .run_hookdir = configured_hookdir_opt() \ }
-- 2.28.0.rc0.142.g3c755180ce-goog