git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Samuel Čavoj" <samuel@cavoj.net>
Cc: git@vger.kernel.org, Phillip Wood <phillip.wood123@gmail.com>
Subject: Re: [PATCH v3 3/3] sequencer: pass explicit --no-gpg-sign to merge
Date: Thu, 15 Oct 2020 10:02:20 -0700	[thread overview]
Message-ID: <xmqqd01jh17n.fsf@gitster.c.googlers.com> (raw)
In-Reply-To: <20201013213021.3671432-3-samuel@cavoj.net> ("Samuel =?utf-8?Q?=C4=8Cavoj=22's?= message of "Tue, 13 Oct 2020 23:30:24 +0200")

Samuel Čavoj <samuel@cavoj.net> writes:

> The merge subcommand launched for merges with non-default strategy would
> use its own default behaviour to decide how to sign commits, regardless
> of what opts->gpg_sign was set to. For example the --no-gpg-sign flag
> given to rebase explicitly would get ignored, if commit.gpgsign was set
> to true.
>
> Fix the issue and add a test case excercising this behaviour.
>
> Signed-off-by: Samuel Čavoj <samuel@cavoj.net>
> ---
> v2 -> v3:
>     - added test case
> ---
>  sequencer.c                | 2 ++
>  t/t3435-rebase-gpg-sign.sh | 7 +++++++
>  2 files changed, 9 insertions(+)
>
> diff --git a/sequencer.c b/sequencer.c
> index 88ccff4838..043d606829 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -3678,6 +3678,8 @@ static int do_merge(struct repository *r,
>  		strvec_push(&cmd.args, git_path_merge_msg(r));
>  		if (opts->gpg_sign)
>  			strvec_pushf(&cmd.args, "-S%s", opts->gpg_sign);
> +		else
> +			strvec_push(&cmd.args, "--no-gpg-sign");

Makes sense, I guess.  As long as opts->gpg_sign reflects not just
the command line but also the configuration.  Otherwise, an
invocation of "git rebase" with no gpg-sign related command line
options would say "ah, opts->gpg_sign is false, we must have been
told from the command line not to sign, so pass --no-gpg-sign here"
and that is not correct.

> diff --git a/t/t3435-rebase-gpg-sign.sh b/t/t3435-rebase-gpg-sign.sh
> index 9d2faffa03..773c2a1d72 100755
> --- a/t/t3435-rebase-gpg-sign.sh
> +++ b/t/t3435-rebase-gpg-sign.sh
> @@ -81,4 +81,11 @@ test_expect_success 'rebase -r, GPG config and merge strategies' '
>  	git verify-commit HEAD
>  '
>  
> +test_expect_success 'rebase -r, --no-gpg-sign and merge strategies' '
> +	git reset --hard merged &&
> +	test_config commit.gpgsign true &&
> +	git rebase -fr --no-gpg-sign -s resolve --root &&
> +	test_must_fail git verify-commit HEAD
> +'

I think that before this patch, we've tested the "no command line
option, but configuration tells us to sign" combination already to
make sure the result is signed, so this new test is sufficient.

I briefly wondered if "test_must_fail git verify-commit" sufficient
to make sure that the rebased commits are not signed (i.e. verify
may fail for reasons other than the commit lacks signature, like the
commit is signed but with a wrong key, etc.), but I think it is OK
at least for now.  Others might have clever ideas to cleanly and
cheaply reject other kinds of failures, in which case we may want to
adopt such a solution.

Now that we know that the root cause of the bug you fixed was
because rebase rebase with the default merge strategy for two-head
merges use separate codepaths from and all other rebases, I wonder
if it is prudent to also test the same cases this series adds
without giving "-s resolve".  That would exercise the other codepath
that handles the default merge strategy for two-head merges.  Yes,
we know that other codepath has been working even before this fix,
but tests are not about showing off what we fixed, but are about
making sure similar breakage won't be introduced by mistake in the
future.

Thanks.

  reply	other threads:[~2020-10-15 17:02 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-13 21:30 [PATCH v3 1/3] t3435: use `test_config` instead of `git config` Samuel Čavoj
2020-10-13 21:30 ` [PATCH v3 2/3] sequencer: fix gpg option passed to merge subcommand Samuel Čavoj
2020-10-15 16:47   ` Junio C Hamano
2020-10-13 21:30 ` [PATCH v3 3/3] sequencer: pass explicit --no-gpg-sign to merge Samuel Čavoj
2020-10-15 17:02   ` Junio C Hamano [this message]
2020-10-17 22:02     ` Samuel Čavoj
2020-10-17 22:34       ` Junio C Hamano
2020-10-17 23:16         ` Samuel Čavoj
2020-10-15 16:43 ` [PATCH v3 1/3] t3435: use `test_config` instead of `git config` 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=xmqqd01jh17n.fsf@gitster.c.googlers.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=phillip.wood123@gmail.com \
    --cc=samuel@cavoj.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).