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

[PATCH 03/16] merge-file --diff3: add a label for ancestor

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Mar 17, 2010, 11:57 UTC
Message-ID
<20100317115731.GC25641@progeny.tock>
In-Reply-To
<20100317113655.GA25470@progeny.tock>

git merge-file --diff3 can be used to present conflicts hunks including text from the common ancestor.

The added information is helpful for resolving a merge by hand, and
merge tools can usually grok it because it looks like output from
diff3 -m.  However, ‘diff3’ includes a label for the merge base on the
||||||| line and some tools cannot parse conflict hunks without such a
label.  Write the base-name as passed in a -L option (or the name of
the ancestor file by default) on that line.

git rerere will not have trouble parsing this output, since instead of looking for a newline, it looks for whitespace after the ||||||| marker. Since rerere includes its own code for recreating conflict hunks, conflict identifiers are unaffected. No other code in git tries to parse conflict hunks.

Requested-by: Stefan Monnier <monnier@iro.umontreal.ca>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
t/t6023-merge-files.sh needs another change when merging to next.
@@ -225,7 +225,7 @@ et nihil mihi deerit;

 In loco pascuae ibi me collocavit;
 super aquam refectionis educavit me.
-||||||||||
+|||||||||| new5.txt
 et nihil mihi deerit.
 In loco pascuae ibi me collocavit,
 super aquam refectionis educavit me;

 builtin/merge-file.c  |    1 +
 t/t6023-merge-file.sh |    2 +-
 2 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/builtin/merge-file.c b/builtin/merge-file.c
index ade1e8b..04cb67a 100644
--- a/builtin/merge-file.c
+++ b/builtin/merge-file.c
@@ -72,6 +72,7 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix)
 					argv[i]);
 	}
 
+	xmp.ancestor = names[1];
 	xmp.file1 = names[0];
 	xmp.file2 = names[2];
 	ret = xdl_merge(mmfs + 1, mmfs + 0, mmfs + 2, &xmp,
diff --git a/t/t6023-merge-file.sh b/t/t6023-merge-file.sh
index d605024..16c3c69 100755
--- a/t/t6023-merge-file.sh
+++ b/t/t6023-merge-file.sh
@@ -181,7 +181,7 @@ et nihil mihi deerit;
 
 In loco pascuae ibi me collocavit;
 super aquam refectionis educavit me.
-|||||||
+||||||| new5.txt
 et nihil mihi deerit.
 In loco pascuae ibi me collocavit,
 super aquam refectionis educavit me;
-- 
1.7.0
Previous: Jonathan NiederNext: Jonathan Nieder
Message 6 of 23 in “Add label for common ancestor to conflictstyle=diff3”
  1. 0/16 Add label for common ancestor to conflictstyle=diff3Jonathan Nieder, Mar 17, 2010
  2. 01/16 xdl_merge(): add optional ancestor label to diff3-style outputJonathan Nieder, Mar 17, 2010
  3. Bert WesargMar 17, 2010
  4. Jonathan NiederMar 20, 2010
  5. 02/16 xdl_merge(): move file1 and file2 labels to xmparam structureJonathan Nieder, Mar 17, 2010
  6. 03/16 merge-file --diff3: add a label for ancestorJonathan Nieder, Mar 17, 2010
  7. 04/16 ll_merge(): add ancestor label parameter for diff3-style outputJonathan Nieder, Mar 17, 2010
  8. 05/16 checkout --conflict=diff3: add a label for ancestorJonathan Nieder, Mar 17, 2010
  9. 06/16 merge_file(): add comment explaining behavior wrt conflict styleJonathan Nieder, Mar 17, 2010
  10. 07/16 merge_trees(): add ancestor label parameter for diff3-style outputJonathan Nieder, Mar 17, 2010
  11. 08/16 tests: document format of conflicts from checkout -mJonathan Nieder, Mar 17, 2010
  12. 09/16 checkout -m --conflict=diff3: add a label for ancestorJonathan Nieder, Mar 17, 2010
  13. 10/16 tests: document cherry-pick behavior in face of conflictsJonathan Nieder, Mar 17, 2010
  14. 11/16 revert_or_cherry_pick(): get oneline_body from get_oneline()Jonathan Nieder, Mar 17, 2010
  15. Stephen BoydMar 17, 2010
  16. Jonathan NiederMar 18, 2010
  17. revert: clarify label on conflict hunksJonathan Nieder, Mar 18, 2010
  18. 15/16 cherry-pick, revert: add a label for ancestorJonathan Nieder, Mar 18, 2010
  19. 12/16 compat: add mempcpy()Jonathan Nieder, Mar 17, 2010
  20. 13/16 revert: simplify get_oneline() using mempcpyJonathan Nieder, Mar 17, 2010
  21. 14/16 revert: clarify label on conflict hunksJonathan Nieder, Mar 17, 2010
  22. 15/16 cherry-pick: add a label for ancestorJonathan Nieder, Mar 17, 2010
  23. 16/16 merge-recursive: add a label for ancestorJonathan Nieder, Mar 17, 2010

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.