git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 4/6] merge-octopus: Abort if index does not match HEAD

From
Elijah Newren <newren@gmail.com>
Date
Apr 10, 2016, 06:13 UTC
Message-ID
<1460268820-8308-5-git-send-email-newren@gmail.com>
In-Reply-To
<1460268820-8308-1-git-send-email-newren@gmail.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
---
 git-merge-octopus.sh                     | 6 ++++++
 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 8643f74..dc2fd1b 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 eed5d95..20a3ffe 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 &&
 
-- 
2.8.0.21.g229f62a
Previous: Elijah NewrenNext: Elijah Newren
Message 6 of 10 in “Miscellaneous merge fixes”
  1. 0/6 Miscellaneous merge fixesElijah Newren, Apr 10, 2016
  2. 1/6 Remove duplicate codeElijah Newren, Apr 10, 2016
  3. 2/6 Avoid checking working copy when creating a virtual merge baseElijah Newren, Apr 10, 2016
  4. Junio C HamanoApr 13, 2016
  5. 3/6 Add merge testcases for when index doesn't match HEADElijah Newren, Apr 10, 2016
  6. 4/6 merge-octopus: Abort if index does not match HEADElijah Newren, Apr 10, 2016
  7. 5/6 Add a testcase demonstrating a bug with trivial mergesElijah Newren, Apr 10, 2016
  8. 6/6 builtin/merge.c: Fix a bug with trivial mergesElijah Newren, Apr 10, 2016
  9. Junio C HamanoApr 13, 2016
  10. Elijah NewrenApr 15, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.