summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgit-merge-octopus.sh6
-rwxr-xr-xt/t6044-merge-unrelated-index-changes.sh6
2 files changed, 9 insertions, 3 deletions
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 &&