diff options
author | Elijah Newren <newren@gmail.com> | 2016-04-09 23:13:38 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-04-12 18:39:43 -0700 |
commit | 3ec62ad9ffba2476e30fdf8e8717756fe62119f9 (patch) | |
tree | 8485a8c272cb56a6b4b90ddb41e3305864323ae4 | |
parent | a6ee883b8eb56d200c3297184d29ea488a34cf43 (diff) | |
download | git-3ec62ad9ffba2476e30fdf8e8717756fe62119f9.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-x | git-merge-octopus.sh | 6 | ||||
-rwxr-xr-x | t/t6044-merge-unrelated-index-changes.sh | 6 |
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 && |