diff --git a/builtin/merge.c b/builtin/merge.c index 7e6db3bb35..ed0f959ac4 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1324,7 +1324,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix) merge_remote_util(commit) && merge_remote_util(commit)->obj && merge_remote_util(commit)->obj->type == OBJ_TAG) { - option_edit = 1; + if (option_edit < 0) + option_edit = 1; allow_fast_forward = 0; } } diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh index a598dfa477..9e27bbf902 100755 --- a/t/t7600-merge.sh +++ b/t/t7600-merge.sh @@ -683,4 +683,16 @@ test_expect_success GPG 'merge --ff-only tag' ' test_cmp actual expect ' +test_expect_success GPG 'merge --no-edit tag should skip editor' ' + git reset --hard c0 && + git commit --allow-empty -m "A newer commit" && + git tag -f -s -m "A newer commit" signed && + git reset --hard c0 && + + EDITOR=false git merge --no-edit signed && + git rev-parse signed^0 >expect && + git rev-parse HEAD^2 >actual && + test_cmp actual expect +' + test_done