merge-octopus: abort if index does not match HEAD
authorElijah Newren <newren@gmail.com>
Sun, 10 Apr 2016 06:13:38 +0000 (23:13 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 13 Apr 2016 01:39:43 +0000 (18:39 -0700)
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-merge-octopus.sh
t/t6044-merge-unrelated-index-changes.sh
index 8643f74cb09f278c37851c418e839c7d160f36ca..dc2fd1b5a47b3d759aa251549d2c158713ccfa4e 100755 (executable)
@@ -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
index eed5d95c1343b4061c9e0b1e77cb0b6079773421..20a3ffed6911e3f97427437d861273f33c64051a 100755 (executable)
@@ -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 &&