Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: >> Puzzling. Why do you single out octopus merge like this? >> >> sequencer.c::do_merge() is called from pick_commits() whenever we >> see a "merge" insn, and not limited to an octopus merge. >> >> Can we have a test to demonstrate the existing failure, so that we >> can notice if this fix is broken in the future? > > Yes, now that I understand that not only octopus merges are affected, I > would be very much in favor of adding a test case. Ah, I see why the initial description was focused on octopus. The code special cases the two-parent merge using the recursive strategy and uses completely separate codepath for it, which does not have this problem but the codepath that handles octopus merges and merges with the non-default strategy have the problem. > If I may suggest to add a new test case to t3435 based on t3430's > '--rebase-merges with strategies' and t3404's 'rebase -i > --gpg-sign=<key-id>'? Something along these lines: In addition, a test that passes --no-gpg-sign from the command line, because commit.gpgsign is set in the repository used in these tests, would be necessary---we want to make sure the command line overrides the configured default (which is the topic of [patch 2/1]). > > -- snipsnap -- > diff --git a/sequencer.c b/sequencer.c > index 00acb124962..88ccff4838d 100644 > --- a/sequencer.c > +++ b/sequencer.c > @@ -3677,7 +3677,7 @@ static int do_merge(struct repository *r, > strvec_push(&cmd.args, "-F"); > strvec_push(&cmd.args, git_path_merge_msg(r)); > if (opts->gpg_sign) > - strvec_push(&cmd.args, opts->gpg_sign); > + strvec_pushf(&cmd.args, "-S%s", opts->gpg_sign); > > /* Add the tips to be merged */ > for (j = to_merge; j; j = j->next) > diff --git a/t/t3435-rebase-gpg-sign.sh b/t/t3435-rebase-gpg-sign.sh > index b47c59c190b..f70b280f5c1 100755 > --- a/t/t3435-rebase-gpg-sign.sh > +++ b/t/t3435-rebase-gpg-sign.sh > @@ -68,4 +68,10 @@ test_expect_failure 'rebase -p --no-gpg-sign override commit.gpgsign' ' > test_must_fail git verify-commit HEAD > ' > > +test_expect_success 'rebase -r, GPG and merge strategies' ' > + git reset --hard merged && > + git rebase -fr --gpg-sign -s resolve --root && > + git verify-commit HEAD > +' > + > test_done