#!/bin/sh test_description="Test that merge state is as expected after failed merge" GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh test_expect_success 'Ensure we restore original state if no merge strategy handles it' ' test_commit --no-tag "Initial" base base && for b in branch1 branch2 branch3 do git checkout -b $b main && test_commit --no-tag "Change on $b" base $b || return 1 done && git checkout branch1 && # This is a merge that octopus cannot handle. Note, that it does not # just hit conflicts, it completely fails and says that it cannot # handle this type of merge. test_expect_code 2 git merge branch2 branch3 >output 2>&1 && grep "fatal: merge program failed" output && grep "Should not be doing an octopus" output && # Make sure we did not leave stray changes around when no appropriate # merge strategy was found git diff --exit-code --name-status && test_path_is_missing .git/MERGE_HEAD ' test_done