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

Re: [PATCH] Respect crlf attribute in "git add" even if core.autocrlf has not been set

From
Dmitry Potapov <dpotapov@gmail.com>
Date
Jul 24, 2008, 14:09 UTC
Message-ID
<20080724140959.GU2925@dpotapov.dyndns.org>
In-Reply-To
<FCAEAB20-750E-47B9-B58D-9BB0CB1EEAFF@zib.de>
On Thu, Jul 24, 2008 at 08:06:29AM +0200, Steffen Prohaska wrote:
Show 10 quoted lines
> 
> I have however a related question:
> 
> Dscho,
> Is the following your use case?
> 
>  "I am the maintainer of this project.  I know that this project needs
>   crlf conversion, because it is a cross-platform project.  Therefore,
>   I want to force crlf conversion for this specific project, even if
>   the user did not configure core.autocrlf=input on Unix."

I suspect that most problems with crlf is caused by Windows users who have core.autocrlf=false for whatever reason (I suspect without a good reason in most cases). But perhaps having core.autocrlf=input as default on Unix and Mac will be better than the current core.autocrlf=false.

> Maybe we could allow 'crlf=guess' in .gitattributes with the following
> documentation:

Please, no. It feels wrong to complicate crlf settings to workaround incorrect user configuration. I don't think that many people really will be able to benefit from that. In most cases, people end up with the incorrect value autocrlf just because the documentation is complicated and it is difficult to understand from it what autocrlf does.

So I believe the real solution is providing more reasonable defaults for autocrlf and more clear and simple explanation, i.e. to have something like in the introduction section describing how to set up your own repository:

=== If you work on Windows, you are most likely use text files with CRLF endings. To ensure that your line endings will be correctly represented on other platforms, you should set core.autocrlf=true.

If you prefer to have LF endings in your text files, you may want to set core.autocrlf=input to ensure that files with inconsistent end-of-lines will not enter into your repository.

autocrlf conversion will automatically detect text files and convert line endings accordingly to the specified settings. In very rare cases, heuristic may be wrong[*], so you may want to specify what files should bed considered as text and what as binary explicitly. You can do that by setting the crlf attribute in .gitattributes, like this:

*.exe -crlf *.c crlf

The above says that all files with the .exe extension should be treated as binary and all files with the .c extension should treated as text.

[*] You do not have to worry too much about heuristic being wrong, because you will be warned if conversion for a file is irreversible. See core.safecrlf in linkgit:gitattributes[5] for more information. ===

We should not expect every users to read everything written in gitattributes just to get autocrlf correctly.

Dmitry
Previous: Dmitry PotapovNext: Johannes Schindelin
Message 14 of 58 in “Respect crlf attribute even if core.autocrlf has not been set”
  1. Respect crlf attribute even if core.autocrlf has not been setJohannes Schindelin, Jul 22, 2008
  2. Dmitry PotapovJul 22, 2008
  3. Johannes SchindelinJul 22, 2008
  4. Dmitry PotapovJul 23, 2008
  5. Junio C HamanoJul 23, 2008
  6. Johannes SchindelinJul 23, 2008
  7. Respect crlf attribute in "git add" even if core.autocrlf has not been setJohannes Schindelin, Jul 23, 2008
  8. Steffen ProhaskaJul 23, 2008
  9. Johannes SchindelinJul 23, 2008
  10. Dmitry PotapovJul 23, 2008
  11. Steffen ProhaskaJul 24, 2008
  12. Johannes SchindelinJul 24, 2008
  13. Dmitry PotapovJul 24, 2008
  14. Dmitry PotapovJul 24, 2008
  15. Johannes SchindelinJul 24, 2008
  16. Steffen ProhaskaJul 24, 2008
  17. Avery PennarunJul 24, 2008
  18. Johannes SchindelinJul 24, 2008
  19. Robin RosenbergJul 24, 2008
  20. Johannes SchindelinJul 24, 2008
  21. Junio C HamanoJul 23, 2008
  22. Johannes SchindelinJul 23, 2008
  23. Joshua JensenJul 23, 2008
  24. Avery PennarunJul 23, 2008
  25. Johannes SchindelinJul 23, 2008
  26. Eyvind BernhardsenJul 23, 2008
  27. Johannes SchindelinJul 23, 2008
  28. Eyvind BernhardsenJul 24, 2008
  29. Johannes SchindelinJul 25, 2008
  30. Eyvind BernhardsenJul 25, 2008
  31. Dmitry PotapovJul 25, 2008
  32. Eyvind BernhardsenJul 25, 2008
  33. Johannes SchindelinJul 26, 2008
  34. Eyvind BernhardsenJul 29, 2008
  35. Dmitry PotapovJul 29, 2008
  36. Eyvind BernhardsenJul 29, 2008
  37. Steffen ProhaskaJul 30, 2008
  38. Avery PennarunJul 30, 2008
  39. Steffen ProhaskaJul 30, 2008
  40. Avery PennarunJul 30, 2008
  41. Dmitry PotapovJul 30, 2008
  42. Avery PennarunJul 30, 2008
  43. TarmiganAug 3, 2008
  44. Dmitry PotapovAug 3, 2008
  45. TarmiganAug 3, 2008
  46. Dmitry PotapovAug 4, 2008
  47. Dmitry PotapovJul 30, 2008
  48. Eyvind BernhardsenAug 2, 2008
  49. Dmitry PotapovAug 3, 2008
  50. Robin RosenbergJul 23, 2008
  51. Junio C HamanoJul 23, 2008
  52. Johannes SchindelinJul 23, 2008
  53. Dmitry PotapovJul 23, 2008
  54. Junio C HamanoJul 23, 2008
  55. Johannes SchindelinJul 23, 2008
  56. Dmitry PotapovJul 24, 2008
  57. Johannes SchindelinJul 24, 2008
  58. Dmitry PotapovJul 24, 2008

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.