Skip to content

Commit 19dad04

Browse files
sammkogitster
authored andcommitted
sequencer: pass explicit --no-gpg-sign to merge
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent ae03c97 commit 19dad04

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

sequencer.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3678,6 +3678,8 @@ static int do_merge(struct repository *r,
36783678
strvec_push(&cmd.args, git_path_merge_msg(r));
36793679
if (opts->gpg_sign)
36803680
strvec_pushf(&cmd.args, "-S%s", opts->gpg_sign);
3681+
else
3682+
strvec_push(&cmd.args, "--no-gpg-sign");
36813683

36823684
/* Add the tips to be merged */
36833685
for (j = to_merge; j; j = j->next)

t/t3435-rebase-gpg-sign.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,11 @@ test_expect_success 'rebase -r, merge strategy, commit.gpgsign=false --gpg-sign
8989
git verify-commit HEAD
9090
'
9191

92+
test_expect_success "rebase -r, merge strategy, commit.gpgsign=true --no-gpg-sign won't sign commit" '
93+
git reset --hard merged &&
94+
git config commit.gpgsign true &&
95+
git rebase -fr --no-gpg-sign -s resolve --root &&
96+
test_must_fail git verify-commit HEAD
97+
'
98+
9299
test_done

0 commit comments

Comments
 (0)