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

Re: [PATCH v3 1/2] merge-file: let conflict markers match end-of-line style of the context

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jan 26, 2016, 09:04 UTC
Message-ID
<alpine.DEB.2.20.1601260955320.2964@virtualbox>
In-Reply-To
<xmqqr3h5fmf4.fsf@gitster.mtv.corp.google.com>
Hi Junio,
On Mon, 25 Jan 2016, Junio C Hamano wrote:
Show 13 quoted lines
> Johannes Schindelin <johannes.schindelin@gmx.de> writes:
> 
> > We actually do not have to look at the *entire* context at all: if the
> > files are all LF-only, or if they all have CR/LF line endings, it is
> > sufficient to look at just a *single* line to match that style. And if
> > the line endings are mixed anyway, it is *still* okay to imitate just a
> > single line's eol: we will just add to the pile of mixed line endings,
> > and there is nothing we can do about that.
> 
> Isn't there one thing we can do still?  If we use CRLF for the
> marker lines when the content is already mixed, I'd think it would
> help Notepad (not necessary for Notepad2 or Wordpad IIUC) by making
> sure that they can see where the marker lines end correctly.

Not sure. You might end up with a very long line (containing plenty of LF "characters") and the conflict marker *at the end* of said line, with a CR/LF after it. I would not call that particularly helpful.

Seeing as we really cannot do anything in this case, I thought it would be a good idea to avoid trying (and failing) to be smart here.

Show 13 quoted lines
> > Note that while it is true that there have to be at least two lines we
> > can look at (otherwise there would be no conflict), the same is not true
> > for line *endings*: the three files in question could all consist of a
> > single line without any line ending, each. In this case we fall back to
> > using LF-only.
> 
> Yeah, this is tricky, and from the same "helping Notepad that
> concatenates lines with LF-only" perspective I should perhaps be
> suggesting to use CRLF in such a case, too, but I would say we
> should not do so.  Three variants of a LF-only file may have
> conflict at the incomplete last line, and if we only look at their
> "no EOL"-ness and decide to add CRLF to the result, that would be
> irritatingly wrong.

Oh, but there is the fall-back to the first line. So if we have three variants of an LF-only file, the logic will figure out that LF-only end-of-lines are to be used.

So the *only* case where we really have to pick and choose is when all three files contain only one (or no) line that is not terminated by a line feed.

I briefly considered to choose EOL_NATIVE in that case, but I really do not like that unnecessary deviation from Linux Git.

Ciao, Dscho

Previous: Junio C HamanoNext: Junio C Hamano
Message 38 of 55 in “Let merge-file write out conflict markers with correct EOLs”
  1. 0/2 Let merge-file write out conflict markers with correct EOLsJohannes Schindelin, Jan 22, 2016
  2. 1/2 convert: add a helper to determine the correct EOL for a given pathJohannes Schindelin, Jan 22, 2016
  3. Junio C HamanoJan 22, 2016
  4. Johannes SchindelinJan 22, 2016
  5. Torsten BögershausenJan 23, 2016
  6. Johannes SchindelinJan 24, 2016
  7. Torsten BögershausenJan 23, 2016
  8. Johannes SchindelinJan 24, 2016
  9. 2/2 merge-file: consider core.crlf when writing merge markersJohannes Schindelin, Jan 22, 2016
  10. Junio C HamanoJan 22, 2016
  11. Johannes SchindelinJan 22, 2016
  12. Junio C HamanoJan 22, 2016
  13. Johannes SchindelinJan 24, 2016
  14. Eric SunshineJan 22, 2016
  15. Eric SunshineJan 22, 2016
  16. Johannes SchindelinJan 24, 2016
  17. Eric SunshineJan 24, 2016
  18. Johannes SchindelinJan 25, 2016
  19. Torsten BögershausenJan 23, 2016
  20. Johannes SchindelinJan 24, 2016
  21. Beat BolliJan 22, 2016
  22. 0/1 Let merge-file write out conflict markers with correct EOLsJohannes Schindelin, Jan 24, 2016
  23. 1/1 merge-file: let conflict markers match end-of-line style of the contextJohannes Schindelin, Jan 24, 2016
  24. Torsten BögershausenJan 24, 2016
  25. Torsten BögershausenJan 24, 2016
  26. Johannes SchindelinJan 25, 2016
  27. Ramsay JonesJan 25, 2016
  28. Johannes SchindelinJan 26, 2016
  29. Ramsay JonesJan 26, 2016
  30. Johannes SchindelinJan 26, 2016
  31. Junio C HamanoJan 24, 2016
  32. Johannes SchindelinJan 25, 2016
  33. 0/2 Let merge-file write out conflict markers with correct EOLsJohannes Schindelin, Jan 25, 2016
  34. 1/2 merge-file: let conflict markers match end-of-line style of the contextJohannes Schindelin, Jan 25, 2016
  35. Torsten BögershausenJan 25, 2016
  36. Johannes SchindelinJan 25, 2016
  37. Junio C HamanoJan 25, 2016
  38. Johannes SchindelinJan 26, 2016
  39. Junio C HamanoJan 26, 2016
  40. 2/2 merge-file: ensure that conflict sections match eol styleJohannes Schindelin, Jan 25, 2016
  41. Johannes SchindelinJan 25, 2016
  42. 0/2 Let merge-file write out conflict markers with correct EOLsJohannes Schindelin, Jan 26, 2016
  43. 1/2 merge-file: let conflict markers match end-of-line style of the contextJohannes Schindelin, Jan 26, 2016
  44. Junio C HamanoJan 26, 2016
  45. Junio C HamanoJan 26, 2016
  46. Johannes SchindelinJan 27, 2016
  47. Junio C HamanoJan 27, 2016
  48. Johannes SchindelinJan 27, 2016
  49. Junio C HamanoJan 27, 2016
  50. Johannes SchindelinJan 28, 2016
  51. 2/2 merge-file: ensure that conflict sections match eol styleJohannes Schindelin, Jan 26, 2016
  52. 0/2 Let merge-file write out conflict markers with correct EOLsJohannes Schindelin, Jan 27, 2016
  53. 1/2 merge-file: let conflict markers match end-of-line style of the contextJohannes Schindelin, Jan 27, 2016
  54. 2/2 merge-file: ensure that conflict sections match eol styleJohannes Schindelin, Jan 27, 2016
  55. Junio C HamanoJan 27, 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.