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

Re: What's cooking extra

From
Eyvind Bernhardsen <eyvind.bernhardsen@gmail.com>
Date
May 23, 2010, 10:36 UTC
Message-ID
<CDD31343-2352-434B-B875-2013DAF49CE7@gmail.com>
In-Reply-To
<20100522222746.GA2694@localhost>
On 23. mai 2010, at 00.27, Clemens Buchacher wrote:
Show 6 quoted lines
> 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.
I appreciate your comments.  The more people who take a critical look at the series, the better :)  I think most of your concerns were covered during the discussion, but it's always good to have more sanity checks.
[...]
> For all my comments below I am assuming that the behavior of
> autocrlf will be changed to respect the crlf/text attribute by
> default.
That's right, the attribute is used regardless of what autocrlf is set to.
Show 6 quoted lines
>> 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.
Yeah, that's what I initially thought too, but it makes sense to be able to use normalization to prevent line ending breakages in your repository.  If a file needs CRLFs for some tool to work, you don't want anyone to inadvertently convert it to LF, and "eol=crlf" makes git enforce that.
[...]
Show 8 quoted lines
>> 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 agree, but I really wanted to avoid breaking any settings.  I'm thinking of submitting a patch to remove the backwards compatibility for 1.8, leaving core.autocrlf as a simple boolean meaning "* text=auto".
> 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.
Actually, since git normalizes to LF, "eol=lf" simply means "convert on input but not on output", which is what "core.autocrlf=input" currently does.  The fact that you didn't know this reflects the poor usability of core.autocrlf, which is one of the things this series is trying to rectify :)
It also allows for the possibility of supporting other line endings such as the classic Mac "CR only".  That might not be a good thing.
> 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.
The problem is that users don't care anyway, and they've been trained by other VCSes that they shouldn't need to care.  This series allows me to put "* text=auto" in my repository and git will automatically normalize text files regardless of the user's configuration, which wasn't possible before.
[...]
> 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.
Yes, but I don't think it should cause any problems in practice.  Since the "binary" attribute just means "-text -diff" it will override a "* text=auto", which I is the only relevant interaction I can see.
-- 
Eyvind
Previous: Clemens BuchacherNext: Clemens Buchacher
Message 8 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.