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

Re: What's cooking extra

From
Clemens Buchacher <drizzd@aon.at>
Date
May 22, 2010, 22:27 UTC
Message-ID
<20100522222746.GA2694@localhost>
In-Reply-To
<50199F1F-3513-43A6-8990-957F3D0AF58C@gmail.com>
Hi Eyvind,

Thanks for the extended summary. I still have several doubts, as detailed below. But I understand that this has been heavily discussed and if the discussion has indeed come to a conclusion, then I will not complain about it now.

On Sat, May 22, 2010 at 09:42:14PM +0200, Eyvind Bernhardsen wrote:
Show 5 quoted lines
> On 22. mai 2010, at 15.09, Clemens Buchacher wrote:
> 
> > As soon as the existing crlf attribute is given priority over
> > core.autocrlf, all the problems discussed originally go away.
> > So what exactly are the new attributes supposed to do?

For all my comments below I am assuming that the behavior of autocrlf will be changed to respect the crlf/text attribute by default.

> There is one new attribute, "eol", that is used for files which
> need a specific line ending.  Being able to "force" LF or CRLF
> line endings has been requested several times on the list, and is
> already sort of provided for by "crlf=input".
[...]
Show 7 quoted lines
> Any file with the "text" attribute set will have its line endings
> normalized to LF in the repository.  If "text" is set to the
> special value "auto", git will only convert the file if it looks
> like a text file.
> 
> The "eol" attribute is used for files that need a specific line
> ending.  Setting it also sets "text".

If a file needs specific line endings, why enable conversion for this file at all? Just make sure the repository contains the correct version and unset the crlf attribute.

> core.eol controls which line endings to use for normalized files
> that don't have the "eol" attribute set, and defaults to the
> platform native line ending.

That makes sense to me, except for the part where I need a per-file attribute.

Show 9 quoted lines
> When core.autocrlf is set, the default value of the "text"
> attribute is set to "auto" but with an extra safety feature: if a
> file contains CRs in the index, it won't be normalized.  The
> extra feature comes from Finn Arne's "safe autocrlf" patch.
> 
> There is a backwards compatibility wrinkle in that core.autocrlf
> will override core.eol if the latter isn't explicitly set, so
> that "core.autocrlf=true" still results in CRLFs in the working
> directory on Linux.

This also makes sense. I just fear that making this frequently misunderstood feature even more complex will only confuse users further.

I do see the value of a global core.eol option, however, since it allows me to convert to LF instead of CRLF, which AFAIK is not currently possible.

On the other hand, this will cause users to stop caring whether or not a file in the repository has LF or CRLF line endings. I am not sure if that is a good thing, but I suppose it is better than what we have now.

Show 8 quoted lines
> > And, renaming the crlf attribute to text? Where did Linus suggest that? If
> > we do that, we don't even have to talk about backwards compatibility any
> > more.
> 
> In <alpine.LFD.2.00.1005121824260.3711@i5.linux-foundation.org>:
> > So if you rename these things, keep them separate.  Make the "am I a
> > text-file" boolean be a boolean (plus "auto"), and just call it "text". 
> > And make the "what end of line to use" be just "eol" then.

I see. Well, if we rename the "crlf" attribute then we will have a macro attribute "binary" and an attribute "text", which are not the opposite of each other. That is a bit strange.

> The "crlf" attribute will be used if it is present so backwards
> compatibility is preserved to a degree.
Ah, ok. That is fine then.
Show 5 quoted lines
> Scripts that test for
> the "crlf" attribute explicitly (such as git-cvsserver, which I
> fixed) will break.  I don't know how big a problem that is going
> to be in practice, but nobody raised it as an issue during the
> discussion.
I agree that should not be a big issue.

Regards, Clemens

Previous: Eyvind BernhardsenNext: Eyvind Bernhardsen
Message 7 of 35 in “What's cooking extra”
  1. Junio C HamanoMay 19, 2010
  2. A Large Angry SCMMay 19, 2010
  3. Finn Arne GangstadMay 19, 2010
  4. Eyvind BernhardsenMay 19, 2010
  5. Clemens BuchacherMay 22, 2010
  6. Eyvind BernhardsenMay 22, 2010
  7. Clemens BuchacherMay 22, 2010
  8. Eyvind BernhardsenMay 23, 2010
  9. Clemens BuchacherMay 23, 2010
  10. Eyvind BernhardsenMay 23, 2010
  11. Ævar Arnfjörð BjarmasonMay 23, 2010
  12. Clemens BuchacherMay 24, 2010
  13. Dmitry PotapovMay 24, 2010
  14. Eyvind BernhardsenMay 24, 2010
  15. Clemens BuchacherMay 24, 2010
  16. Eyvind BernhardsenMay 24, 2010
  17. Eyvind BernhardsenMay 24, 2010
  18. Clemens BuchacherMay 24, 2010
  19. Eyvind BernhardsenMay 25, 2010
  20. Anthony YoungmanMay 25, 2010
  21. Eyvind BernhardsenJun 7, 2010
  22. Clemens BuchacherMay 25, 2010
  23. Dmitry PotapovMay 24, 2010
  24. Erik Faye-LundMay 24, 2010
  25. Dmitry PotapovMay 24, 2010
  26. Ævar Arnfjörð BjarmasonMay 21, 2010
  27. René ScharfeMay 22, 2010
  28. 1/8 grep: add test script for binary file handlingRené Scharfe, May 22, 2010
  29. 2/8 grep: grep: refactor handling of binary mode optionsRené Scharfe, May 22, 2010
  30. 3/8 grep: --count over binaryRené Scharfe, May 22, 2010
  31. 4/8 grep: --name-only over binaryRené Scharfe, May 22, 2010
  32. 5/8 grep: use memmem() for fixed string searchRené Scharfe, May 22, 2010
  33. 6/8 grep: continue case insensitive fixed string search after NUL charsRené Scharfe, May 22, 2010
  34. 7/8 grep: use REG_STARTEND for all matching if availableRené Scharfe, May 22, 2010
  35. 8/8 grep: support NUL chars in search strings for -FRené Scharfe, May 22, 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.