merge: abort if index does not match HEAD for trivial merges
commite4cdfe84a0d2ac560bf0a2ab0e9beade5f71a844
authorElijah Newren <newren@gmail.com>
Sat, 23 Jul 2022 01:53:13 +0000 (23 01:53 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sat, 23 Jul 2022 04:45:23 +0000 (22 21:45 -0700)
treeeb84466dc1d5c3e19d79bb82590de82dda4d0b0c
parent24ba8b70c9965ea40fc1192cf17cd09394cb8350
merge: abort if index does not match HEAD for trivial merges

As noted in the last commit and the links therein (especially commit
9822175d2b ("Ensure index matches head before invoking merge machinery,
round N", 2019-08-17), we have had a very long history of problems with
failing to enforce the requirement that index matches HEAD when starting
a merge.

The "trivial merge" logic in builtin/merge.c is yet another such case
we previously missed.  Add a check for it to ensure it aborts if the
index does not match HEAD, and add a testcase where this fix is needed.

Note that the fix here would also incidentally be an alternative fix
for the testcase added in the last patch, but the fix in the last patch
is still needed when multiple merge strategies are in use, so tweak the
testcase from the previous commit so that it continues to exercise the
codepath added in the last commit.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/merge.c
t/t6424-merge-unrelated-index-changes.sh