diff --git a/git-merge-octopus.sh b/git-merge-octopus.sh index 8643f74cb0..dc2fd1b5a4 100755 --- a/git-merge-octopus.sh +++ b/git-merge-octopus.sh @@ -44,6 +44,12 @@ esac # MRC is the current "merge reference commit" # MRT is the current "merge result tree" +if ! git diff-index --quiet --cached HEAD -- +then + echo "Error: Your local changes to the following files would be overwritten by merge" + git diff-index --cached --name-only HEAD -- | sed -e 's/^/ /' + exit 2 +fi MRC=$(git rev-parse --verify -q $head) MRT=$(git write-tree) NON_FF_MERGE=0 diff --git a/t/t6044-merge-unrelated-index-changes.sh b/t/t6044-merge-unrelated-index-changes.sh index eed5d95c13..20a3ffed69 100755 --- a/t/t6044-merge-unrelated-index-changes.sh +++ b/t/t6044-merge-unrelated-index-changes.sh @@ -105,7 +105,7 @@ test_expect_success 'recursive' ' test_must_fail git merge -s recursive C^0 ' -test_expect_failure 'octopus, unrelated file touched' ' +test_expect_success 'octopus, unrelated file touched' ' git reset --hard && git checkout B^0 && @@ -114,7 +114,7 @@ test_expect_failure 'octopus, unrelated file touched' ' test_must_fail git merge C^0 D^0 ' -test_expect_failure 'octopus, related file removed' ' +test_expect_success 'octopus, related file removed' ' git reset --hard && git checkout B^0 && @@ -123,7 +123,7 @@ test_expect_failure 'octopus, related file removed' ' test_must_fail git merge C^0 D^0 ' -test_expect_failure 'octopus, related file modified' ' +test_expect_success 'octopus, related file modified' ' git reset --hard && git checkout B^0 &&