OSDN Git Service

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 8643f74..dc2fd1b 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 eed5d95..20a3ffe 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 &&