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

[PATCH v2 09/11] t6422, t6426: be more flexible for add/add conflicts involving renames

From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
Date
Aug 8, 2020, 17:01 UTC
Message-ID
<b4e165eca4f6db4d876bfde31d410250c21aab6f.1596906081.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.827.v2.git.git.1596906081.gitgitgadget@gmail.com>
From: Elijah Newren <newren@gmail.com>

merge-recursive treats an add/add conflict where one of the adds came from a rename as a separate 'rename/add' type of conflict. However, if there is not content conflict after the content merge(s), then the file is not considered to be conflicted. That suggests the conflict type is really just add/add. Other merge engines might choose to print messages to the console that just refer to these as add/add conflicts; accept both types of output.

Note: it could help to notify users if the three-way content merge of
the rename had content conflicts, because when we then go to two-way
merge THAT with the conflicting add we can get nested conflict markers.
merge-recursive, unfortunately, doesn't do that, but other merge engines
could.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
 t/t6422-merge-rename-corner-cases.sh   | 21 +++++++++++++--------
 t/t6426-merge-skip-unneeded-updates.sh |  2 +-
 2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/t/t6422-merge-rename-corner-cases.sh b/t/t6422-merge-rename-corner-cases.sh
index 2413f517e7..f3929b65c0 100755
--- a/t/t6422-merge-rename-corner-cases.sh
+++ b/t/t6422-merge-rename-corner-cases.sh
@@ -457,7 +457,7 @@ test_expect_success 'handle rename-with-content-merge vs. add' '
 		git checkout A^0 &&
 
 		test_must_fail git merge -s recursive B^0 >out &&
-		test_i18ngrep "CONFLICT (rename/add)" out &&
+		test_i18ngrep "CONFLICT (.*/add)" out &&
 
 		git ls-files -s >out &&
 		test_line_count = 2 out &&
@@ -503,7 +503,7 @@ test_expect_success 'handle rename-with-content-merge vs. add, merge other way'
 		git checkout B^0 &&
 
 		test_must_fail git merge -s recursive A^0 >out &&
-		test_i18ngrep "CONFLICT (rename/add)" out &&
+		test_i18ngrep "CONFLICT (.*/add)" out &&
 
 		git ls-files -s >out &&
 		test_line_count = 2 out &&
@@ -886,12 +886,17 @@ test_expect_failure 'rad-check: rename/add/delete conflict' '
 		git checkout B^0 &&
 		test_must_fail git merge -s recursive A^0 >out 2>err &&
 
-		# Not sure whether the output should contain just one
-		# "CONFLICT (rename/add/delete)" line, or if it should break
-		# it into a pair of "CONFLICT (rename/delete)" and
-		# "CONFLICT (rename/add)"; allow for either.
-		test_i18ngrep "CONFLICT (rename.*add)" out &&
-		test_i18ngrep "CONFLICT (rename.*delete)" out &&
+		# Instead of requiring the output to contain one combined line
+		#   CONFLICT (rename/add/delete)
+		# or perhaps two lines:
+		#   CONFLICT (rename/add): new file collides with rename target
+		#   CONFLICT (rename/delete): rename source removed on other side
+		# and instead of requiring "rename/add" instead of "add/add",
+		# be flexible in the type of console output message(s) reported
+		# for this particular case; we will be more stringent about the
+		# contents of the index and working directory.
+		test_i18ngrep "CONFLICT (.*/add)" out &&
+		test_i18ngrep "CONFLICT (rename.*/delete)" out &&
 		test_must_be_empty err &&
 
 		git ls-files -s >file_count &&
diff --git a/t/t6426-merge-skip-unneeded-updates.sh b/t/t6426-merge-skip-unneeded-updates.sh
index 5a2d07e516..699813671c 100755
--- a/t/t6426-merge-skip-unneeded-updates.sh
+++ b/t/t6426-merge-skip-unneeded-updates.sh
@@ -374,7 +374,7 @@ test_expect_success '2c: Modify b & add c VS rename b->c' '
 		export GIT_MERGE_VERBOSITY &&
 		test_must_fail git merge -s recursive B^0 >out 2>err &&
 
-		test_i18ngrep "CONFLICT (rename/add): Rename b->c" out &&
+		test_i18ngrep "CONFLICT (.*/add):" out &&
 		test_must_be_empty err &&
 
 		# Make sure c WAS updated
-- 
gitgitgadget
Previous: Elijah Newren via GitGitGadgetNext: Elijah Newren via GitGitGadget
Message 9 of 28 in “Collect merge-related tests to t64xx”
  1. Collect merge-related tests to t64xxElijah Newren via GitGitGadget, Aug 5, 2020
  2. 00/11 Start preparing merge-related tests to work with multiple merge backendsElijah Newren via GitGitGadget, Aug 8, 2020
  3. 02/11 t6418: tighten delete/normalize conflict testcaseElijah Newren via GitGitGadget, Aug 8, 2020
  4. 01/11 Collect merge-related tests to t64xxElijah Newren via GitGitGadget, Aug 8, 2020
  5. 04/11 t6416, t6422: fix incorrect untracked file countElijah Newren via GitGitGadget, Aug 8, 2020
  6. Eric SunshineAug 9, 2020
  7. Elijah NewrenAug 9, 2020
  8. 05/11 t6423: fix test setup for a couple testsElijah Newren via GitGitGadget, Aug 8, 2020
  9. 09/11 t6422, t6426: be more flexible for add/add conflicts involving renamesElijah Newren via GitGitGadget, Aug 8, 2020
  10. 10/11 t642[23]: be more flexible for add/add conflicts involving pair renamesElijah Newren via GitGitGadget, Aug 8, 2020
  11. 08/11 t6423: add an explanation about why one of the tests does not passElijah Newren via GitGitGadget, Aug 8, 2020
  12. 11/11 t6425: be more flexible with rename/delete conflict messagesElijah Newren via GitGitGadget, Aug 8, 2020
  13. 07/11 t6416, t6423: clarify some comments and fix some typosElijah Newren via GitGitGadget, Aug 8, 2020
  14. 06/11 t6422: fix multiple errors with the mod6 test expectationsElijah Newren via GitGitGadget, Aug 8, 2020
  15. 03/11 t6422: fix bad check against missing fileElijah Newren via GitGitGadget, Aug 8, 2020
  16. Eric SunshineAug 9, 2020
  17. 00/11 Start preparing merge-related tests to work with multiple merge backendsElijah Newren via GitGitGadget, Aug 10, 2020
  18. 01/11 Collect merge-related tests to t64xxElijah Newren via GitGitGadget, Aug 10, 2020
  19. 05/11 t6423: fix test setup for a couple testsElijah Newren via GitGitGadget, Aug 10, 2020
  20. 06/11 t6422: fix multiple errors with the mod6 test expectationsElijah Newren via GitGitGadget, Aug 10, 2020
  21. 07/11 t6416, t6423: clarify some comments and fix some typosElijah Newren via GitGitGadget, Aug 10, 2020
  22. 08/11 t6423: add an explanation about why one of the tests does not passElijah Newren via GitGitGadget, Aug 10, 2020
  23. 09/11 t6422, t6426: be more flexible for add/add conflicts involving renamesElijah Newren via GitGitGadget, Aug 10, 2020
  24. 04/11 t6416, t6422: fix incorrect untracked file countElijah Newren via GitGitGadget, Aug 10, 2020
  25. 10/11 t642[23]: be more flexible for add/add conflicts involving pair renamesElijah Newren via GitGitGadget, Aug 10, 2020
  26. 02/11 t6418: tighten delete/normalize conflict testcaseElijah Newren via GitGitGadget, Aug 10, 2020
  27. 11/11 t6425: be more flexible with rename/delete conflict messagesElijah Newren via GitGitGadget, Aug 10, 2020
  28. 03/11 t6422: fix bad check against missing fileElijah Newren via GitGitGadget, Aug 10, 2020

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.