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

Re: git-core: conflictstyle=diff3 doesn't actually use diff3 compatible format

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 6, 2010, 19:03 UTC
Message-ID
<7vvdd9gtmy.fsf@alter.siamese.dyndns.org>
In-Reply-To
<36ca99e91003060457s6417f800uc7a3e126ee6b7d6f@mail.gmail.com>
Bert Wesarg <bert.wesarg@googlemail.com> writes:
> rerere needs an isspace() after the specified marker length. So I
> assume it could live with extra cruft after the | marker and a space.

is_cmarker() is called with want_sp = 0 for '=======' and '|||||||', so the current code accepts both "||||||| rubbish\n" and "|||||||\n".

Also, rerere sanitizes a diff3 style conflict into a merge style conflict before writing a preimage to rr-cache for later comparison [*1*], so it probably is Ok even if we changed it in a way that it no longer reads the current output without " rubbish" after the marker. It appears that it is already prepared to take either form, so we are probably safe here.

But I didn't check subcommands other than rerere that may read and act on the conflict markers.

> BTW: Am I right, that rerere would need to handle my new conflict style too?

If we were to change the output, git needs to be prepared to see both the output before and after the change and behave sensibly; it is not limited to rerere.

For the reverse combined diff format, rerere probably needs to be taught how to convert it as merge style conflict before computing the conflict identifier and write it out in the preimage file, I think.

[Footnote]

*1* See 387c9d4 (rerere: understand "diff3 -m" style conflicts with the original, 2008-08-29).

Previous: Bert WesargNext: Jonathan Nieder
Message 4 of 23 in “Re: git-core: conflictstyle=diff3 doesn't actually use diff3 compatible format”
  1. Jonathan NiederMar 5, 2010
  2. Junio C HamanoMar 5, 2010
  3. Bert WesargMar 6, 2010
  4. Junio C HamanoMar 6, 2010
  5. Jonathan NiederMar 8, 2010
  6. 0/10 Add label for common ancestor to conflictstyle=diff3Jonathan Nieder, Mar 15, 2010
  7. 01/10 xdl_merge(): add optional ancestor label to diff3-style outputJonathan Nieder, Mar 15, 2010
  8. Junio C HamanoMar 15, 2010
  9. Jonathan NiederMar 15, 2010
  10. Junio C HamanoMar 15, 2010
  11. 02/10 merge-file --diff3: add a label for ancestorJonathan Nieder, Mar 15, 2010
  12. 03/10 ll_merge(): add ancestor label parameter for diff3-style outputJonathan Nieder, Mar 15, 2010
  13. 04/10 checkout --conflict=diff3: add a label for ancestorJonathan Nieder, Mar 15, 2010
  14. Junio C HamanoMar 15, 2010
  15. Jonathan NiederMar 15, 2010
  16. 05/10 merge_file(): add comment explaining behavior wrt conflict styleJonathan Nieder, Mar 15, 2010
  17. 06/10 merge_trees(): add ancestor label parameter for diff3-style outputJonathan Nieder, Mar 15, 2010
  18. 07/10 tests: document format of conflicts from checkout -mJonathan Nieder, Mar 15, 2010
  19. 08/10 checkout -m --conflict=diff3: add a label for ancestorJonathan Nieder, Mar 15, 2010
  20. 09/10 cherry-pick: add a label for ancestorJonathan Nieder, Mar 15, 2010
  21. 10/10 merge-recursive: add a label for ancestorJonathan Nieder, Mar 15, 2010
  22. Junio C HamanoMar 15, 2010
  23. Stefan MonnierMar 15, 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.