git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Fix "commit-msg" hook unexpectedly called for "git pull --no-verify"

From
Jeff King <peff@peff.net>
Date
Oct 26, 2021, 21:16 UTC
Message-ID
<YXhwGQOTfD+ypbo8@coredump.intra.peff.net>
In-Reply-To
<YXfwanz3MynCLDmn@pflmari>
On Tue, Oct 26, 2021 at 02:11:22PM +0200, Alex Riesen wrote:
Show 22 quoted lines
> diff --git a/builtin/pull.c b/builtin/pull.c
> index 425950f469..428baea95b 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_no_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, "no-verify", &opt_no_verify, NULL,
> +		N_("bypass pre-merge-commit and commit-msg hooks"),
> +		PARSE_OPT_NOARG | PARSE_OPT_NONEG),
>  	OPT_PASSTHRU(0, "verify-signatures", &opt_verify_signatures, NULL,
>  		N_("verify that the named commit has a valid GPG signature"),
>  		PARSE_OPT_NOARG),

OK, so we failed to pass through --no-verify, because it got caught as a prefix of --verify-signatures, since the outer parse-options didn't know about it. Makes sense, and I suppose this has been broken since 11b6d17801 (pull: pass git-merge's options to git-merge, 2015-06-14).

I was going to ask whether this should be passing through "verify", and allowing its "no-" variant, but there is no "--verify" in git-merge. Arguably there should be (for consistency and to countermand an earlier --no-verify), but that is outside the scope of your fix (sadly if somebody does change that, they'll have to remember to touch this spot, too, but I don't think it can be helped).

Show 7 quoted lines
> +test_expect_success 'git pull --no-verify flag passed to merge' '
> +	test_when_finished "rm -fr src dst actual" &&
> +	git init src &&
> +	test_commit -C src one &&
> +	git clone src dst &&
> +	echo false >dst/.git/hooks/commit-msg &&
> +	chmod +x dst/.git/hooks/commit-msg &&

This script without #! should work portably, I think, though we generally prefer using the helper (which also handles the chmod):

  write_script dst/.git/hooks/commit-msg <<-\EOF
  false
  EOF
Other than that nit, this looks good to me.
-Peff
Previous: Alex RiesenNext: Alex Riesen
Message 2 of 22 in “Fix "commit-msg" hook unexpectedly called for "git pull --no-verify"”
  1. Fix "commit-msg" hook unexpectedly called for "git pull --no-verify"Alex Riesen, Oct 26, 2021
  2. Jeff KingOct 26, 2021
  3. Fix "commit-msg" hook unexpectedly called for "git pull --no-verify"Alex Riesen, Oct 27, 2021
  4. Jeff KingOct 27, 2021
  5. Alex RiesenOct 27, 2021
  6. Jeff KingOct 27, 2021
  7. Remove negation from the merge option "--no-verify"Alex Riesen, Oct 27, 2021
  8. Junio C HamanoOct 27, 2021
  9. Alex RiesenOct 28, 2021
  10. Remove negation from the commit and merge option "--no-verify"Alex Riesen, Oct 28, 2021
  11. Phillip WoodOct 28, 2021
  12. Alex RiesenOct 28, 2021
  13. 2/2 Fix "commit-msg" hook unexpectedly called for "git pull --no-verify"Alex Riesen, Oct 28, 2021
  14. Junio C HamanoOct 28, 2021
  15. Alex RiesenOct 28, 2021
  16. Junio C HamanoOct 28, 2021
  17. Alex RiesenOct 29, 2021
  18. Alex RiesenOct 28, 2021
  19. Phillip WoodOct 29, 2021
  20. Document positive variant of commit and merge option "--no-verify"Alex Riesen, Oct 29, 2021
  21. Phillip WoodNov 1, 2021
  22. Junio C HamanoOct 27, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.