]> git.ipfire.org Git - thirdparty/git.git/commitdiff
pull: honor --no-verify and do not call the commit-msg hook
authorAlex Riesen <raa.lkml@gmail.com>
Thu, 28 Oct 2021 15:46:19 +0000 (17:46 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 28 Oct 2021 16:52:09 +0000 (09:52 -0700)
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/pull.c
t/t5521-pull-options.sh

index b311ea6b9dfda0479b36c96408d21ff4cdda7ae9..ab2af17f2ad80ad1fa0ac34a13e02d62da7e60af 100644 (file)
@@ -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),
@@ -675,6 +679,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);
        strvec_pushv(&args, opt_strategies.v);
index 7601c919fdc0c1fd991632adb61604b8fd16df24..66cfcb09c552c9122e648ec01b9ff4793de6ca7c 100755 (executable)
@@ -228,4 +228,28 @@ test_expect_success 'git pull --no-signoff flag cancels --signoff flag' '
        test_must_be_empty actual
 '
 
+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 &&
+       write_script dst/.git/hooks/commit-msg <<-\EOF &&
+       false
+       EOF
+       test_commit -C src two &&
+       git -C dst pull --no-ff --no-verify
+'
+
+test_expect_success 'git pull --no-verify --verify passed to merge' '
+       test_when_finished "rm -fr src dst actual" &&
+       git init src &&
+       test_commit -C src one &&
+       git clone src dst &&
+       write_script dst/.git/hooks/commit-msg <<-\EOF &&
+       false
+       EOF
+       test_commit -C src two &&
+       test_must_fail git -C dst pull --no-ff --no-verify --verify
+'
+
 test_done