From: Phillip Wood <phillip.wood123@gmail.com>
To: Alex Riesen <alexander.riesen@cetitec.com>,
Junio C Hamano <gitster@pobox.com>
Cc: Jeff King <peff@peff.net>, Git List <git@vger.kernel.org>
Subject: Re: [PATCH] Remove negation from the commit and merge option "--no-verify"
Date: Thu, 28 Oct 2021 14:57:58 +0100 [thread overview]
Message-ID: <edca7f6b-e89c-7efa-c6f5-2c3aaaea54f9@gmail.com> (raw)
In-Reply-To: <YXpZddOixrJDd//s@pflmari>
Hi Alex
On 28/10/2021 09:04, Alex Riesen wrote:
> From: Alex Riesen <raa.lkml@gmail.com>
>
> This allows re-enabling of the hooks disabled by an earlier "--no-verify"
> in command-line and makes the interface more consistent.
Thanks for working on this. Since 0f1930c587 ("parse-options: allow
positivation of options starting, with no-", 2012-02-25) merge and
commit have accepted "--verify" but it is undocumented. The
documentation updates and fix to pull in this patch are very welcome,
but I'm not sure we need the other changes. I've left a couple of
comments below.
[As an aside we should probably improve the documentation in
parse-options.h if both Peff and Junio did not know how it handles
"--no-foo" but that is outside the scope of this patch]
> Incidentally, this also fixes unexpected calling of the hooks by "git
> pull" when "--no-verify" was specified, where it was incorrectly
> translated to "--no-verify-signatures". This caused the unexpected
> effect of the hooks being called. And an even more unexpected effect of
> disabling verification of signatures.
Ouch!
> Signed-off-by: Alexander Riesen <raa.lkml@gmail.com>
>[...]
> diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
> index a3baea32ae..ba66209274 100644
> --- a/Documentation/git-commit.txt
> +++ b/Documentation/git-commit.txt
> @@ -11,7 +11,7 @@ SYNOPSIS
> 'git commit' [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]
> [--dry-run] [(-c | -C | --fixup | --squash) <commit>]
> [-F <file> | -m <msg>] [--reset-author] [--allow-empty]
> - [--allow-empty-message] [--no-verify] [-e] [--author=<author>]
> + [--allow-empty-message] [--[no-]verify] [-e] [--author=<author>]
I think for the synopsis it is fine just to list the most common
options. Having --no-verify without the [no-] makes it clear that
--verify is the default so is not a commonly used option.
> [--date=<date>] [--cleanup=<mode>] [--[no-]status]
> [-i | -o] [--pathspec-from-file=<file> [--pathspec-file-nul]]
> [-S[<keyid>]] [--] [<pathspec>...]
> @@ -174,7 +174,13 @@ The `-m` option is mutually exclusive with `-c`, `-C`, and `-F`.
>
> -n::
> --no-verify::
> - This option bypasses the pre-commit and commit-msg hooks.
> + By default, pre-merge and commit-msg hooks are run. When one of these
I think saying "the pre-merge and commit-msg hooks" would be clearer as
you do below.
> + options is given, these are bypassed.
> + See also linkgit:githooks[5].
> +
> +--verify::
> + This option re-enables running of the pre-commit and commit-msg hooks
> + after an earlier `-n` or `--no-verify`.
> See also linkgit:githooks[5].
Some of the existing documentation describes the "--no-foo" option with
"--foo" (e.g --[no-]signoff) but in other places we list the two options
separately (e.g. --[no-]edit), I'd lean towards combining them as you
have done for the merge documentation but I don't feel strongly about it.
> --allow-empty::
> diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
> index 3819fadac1..324ae879d2 100644
> --- a/Documentation/git-merge.txt
> +++ b/Documentation/git-merge.txt
> @@ -10,7 +10,7 @@ SYNOPSIS
> --------
> [verse]
> 'git merge' [-n] [--stat] [--no-commit] [--squash] [--[no-]edit]
> - [--no-verify] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]]
> + [--[no-]verify] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]]
Again I'm not sure changing the synopsis makes things clearer.
> [--[no-]allow-unrelated-histories]
> [--[no-]rerere-autoupdate] [-m <msg>] [-F <file>] [<commit>...]
> 'git merge' (--continue | --abort | --quit)
> diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt
> index 80d4831662..f8016b0f7b 100644
> --- a/Documentation/merge-options.txt
> +++ b/Documentation/merge-options.txt
> @@ -112,8 +112,9 @@ option can be used to override --squash.
> +
> With --squash, --commit is not allowed, and will fail.
>
> ---no-verify::
> - This option bypasses the pre-merge and commit-msg hooks.
> +--[no-]verify::
> + By default, pre-merge and commit-msg hooks are run. When `--no-verify`
I think "the pre-merge ..." would be better here as well.
> + is given, these are bypassed.
> See also linkgit:githooks[5].
>[...]
> diff --git a/t/t5521-pull-options.sh b/t/t5521-pull-options.sh
> index db1a381cd9..7d3a8ae0d3 100755
> --- a/t/t5521-pull-options.sh
> +++ b/t/t5521-pull-options.sh
> @@ -225,4 +225,16 @@ 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
> +'
Thanks for adding a test
> test_done
> diff --git a/t/t7504-commit-msg-hook.sh b/t/t7504-commit-msg-hook.sh
> index 31b9c6a2c1..166ff5fb26 100755
> --- a/t/t7504-commit-msg-hook.sh
> +++ b/t/t7504-commit-msg-hook.sh
> @@ -130,6 +130,14 @@ test_expect_success '--no-verify with failing hook' '
>
> '
>
> +test_expect_success '-n with failing hook' '
> +
> + echo "more" >> file &&
> + git add file &&
> + git commit -n -m "more"
> +
> +'
Is this to check that "-n" works like "--no-verify"?
I think it would be very useful to add another test that checks
"--verify" overrides "--no-verify".
Best Wishes
Phillip
next prev parent reply other threads:[~2021-10-28 13:58 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-26 12:11 [PATCH] Fix "commit-msg" hook unexpectedly called for "git pull --no-verify" Alex Riesen
2021-10-26 21:16 ` Jeff King
2021-10-27 6:35 ` [PATCH v2] " Alex Riesen
2021-10-27 9:06 ` Jeff King
2021-10-27 12:09 ` [PATCH] " Alex Riesen
2021-10-27 12:19 ` Jeff King
2021-10-27 13:27 ` [PATCH] Remove negation from the merge option "--no-verify" Alex Riesen
2021-10-27 20:16 ` Junio C Hamano
2021-10-28 6:38 ` Alex Riesen
2021-10-28 8:04 ` [PATCH] Remove negation from the commit and " Alex Riesen
2021-10-28 13:57 ` Phillip Wood [this message]
2021-10-28 15:44 ` Alex Riesen
2021-10-28 15:46 ` [PATCH 2/2] Fix "commit-msg" hook unexpectedly called for "git pull --no-verify" Alex Riesen
2021-10-28 16:51 ` Junio C Hamano
2021-10-28 17:16 ` Alex Riesen
2021-10-28 19:25 ` Junio C Hamano
2021-10-29 6:34 ` Alex Riesen
2021-10-28 15:49 ` [PATCH] Remove negation from the commit and merge option "--no-verify" Alex Riesen
2021-10-29 13:32 ` Phillip Wood
2021-10-29 13:45 ` [PATCH] Document positive variant of " Alex Riesen
2021-11-01 15:34 ` Phillip Wood
2021-10-27 20:12 ` [PATCH] Fix "commit-msg" hook unexpectedly called for "git pull --no-verify" Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=edca7f6b-e89c-7efa-c6f5-2c3aaaea54f9@gmail.com \
--to=phillip.wood123@gmail.com \
--cc=alexander.riesen@cetitec.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
--cc=phillip.wood@dunelm.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.