summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElijah Newren <newren@gmail.com>2016-04-09 23:13:38 -0700
committerJunio C Hamano <gitster@pobox.com>2016-04-12 18:39:43 -0700
commit3ec62ad9ffba2476e30fdf8e8717756fe62119f9 (patch)
tree8485a8c272cb56a6b4b90ddb41e3305864323ae4
parenta6ee883b8eb56d200c3297184d29ea488a34cf43 (diff)
downloadgit-en/merge-octopus-fix.tar.gz
merge-octopus: abort if index does not match HEADen/merge-octopus-fix
Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-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 &&