Re: [PATCH 2/2] Fix "commit-msg" hook unexpectedly called for "git pull --no-verify"
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Oct 28, 2021, 16:51 UTC
- Message-ID
- <xmqqv91hrt2y.fsf@gitster.g>
- In-Reply-To
- <YXrFy9I1KPz3IZyp@pflmari>
Alex Riesen <alexander.riesen@cetitec.com> writes:
> Subject: Re: [PATCH 2/2] Fix "commit-msg" hook unexpectedly called for "git pull --no-verify"
Perhaps
Subject: [PATCH] pull: honor --no-verify and do not call the commit-msg hook
instead.
Show 46 quoted lines
> From: Alex Riesen <raa.lkml@gmail.com>
>
> The option was incorrectly auto-translated to "--no-verify-signatures",
> which causes the unexpected effect of the hook being called.
> And an even more unexpected effect of disabling verification of signatures.
>
> The manual page describes the option to behave same as the similarly
> named option of "git merge", which seems to be the original intention
> of this option in the "pull" command.
>
> Signed-off-by: Alexander Riesen <raa.lkml@gmail.com>
> ---
> builtin/pull.c | 6 ++++++
> t/t5521-pull-options.sh | 24 ++++++++++++++++++++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/builtin/pull.c b/builtin/pull.c
> index 425950f469..e783da10b2 100644
> --- a/builtin/pull.c
> +++ b/builtin/pull.c
> @@ -84,6 +84,7 @@ static char *opt_edit;
> static char *cleanup_arg;
> static char *opt_ff;
> static char *opt_verify_signatures;
> +static char *opt_verify;
> static int opt_autostash = -1;
> static int config_autostash;
> static int check_trust_level = 1;
> @@ -160,6 +161,9 @@ static struct option pull_options[] = {
> OPT_PASSTHRU(0, "ff-only", &opt_ff, NULL,
> N_("abort if fast-forward is not possible"),
> PARSE_OPT_NOARG | PARSE_OPT_NONEG),
> + OPT_PASSTHRU(0, "verify", &opt_verify, NULL,
> + N_("control use of pre-merge-commit and commit-msg hooks"),
> + PARSE_OPT_NOARG),
> OPT_PASSTHRU(0, "verify-signatures", &opt_verify_signatures, NULL,
> N_("verify that the named commit has a valid GPG signature"),
> PARSE_OPT_NOARG),
> @@ -688,6 +692,8 @@ static int run_merge(void)
> strvec_pushf(&args, "--cleanup=%s", cleanup_arg);
> if (opt_ff)
> strvec_push(&args, opt_ff);
> + if (opt_verify)
> + strvec_push(&args, opt_verify);
> if (opt_verify_signatures)
> strvec_push(&args, opt_verify_signatures);Looks quite straight-forward, especially that now this just mimicks how --[no-]verify-signatures is passed through.
Thanks, will queue.