Distributing git configuration with the code
git
Solution
I have always found the `autocrlf` config property problematic. (as expressed in my answer Git 1.6.4 beta on Windows (msysgit) - Unix or DOS line termination)
- it not only make some merges tricky
- it can vary depending on the shell used within one environment
- it also has issue with git status
- and with svn import.
Note: msysgit issue 538 advocated for setting it to false by default, instead of true (which is the default value set by the msysgit installer of the time -- 2010!), but I am not convinced.
I would prefer one of the three following solutions for:
- configuring one end-of-line style
- making that configuration propagate through the different Git repos
First: `git config --global core.autocrlf false` Then:
1. Using the new config setting `core.eol` (1.7.2+)
Sets the line ending type to use in the working directory for files that have the text property set. Alternatives are '`lf`', '`crlf`' and '`native`', which uses the platform's native line ending. The default value is native.
2. a checkout/checking `.gitattribute`. See gitattributes man page: `crlf` or `core.autocrlf` is the way to record in a `.gitattributes` file what is was previously a local config attribute.
You can add checkout/checkin attributes like:
*.vcproj text eol=crlf
*.sh text eol=lf
3. a git attribute filter driver which can:
- enforce any kind of formatting standard you may want to set
- apply those standards to certain files/directories
- be recorded as a config file (`.gitattributes`) able to be pushed anywhere.
Problem
In trying to standardise the platform for the developers, one of my needs would be to commit the `.git/config` so that everybody have the same CRLF config without forgetting to set it by hand. How do I set this up? I'm a bit concerned by all this negativity against `autocrlf`. Why not remove this feature if it doesn't work? Either the makers of this feature are misunderstood or they made a failed experiment with it and it should be removed to stop more people from wasting their time (reading the obscure man page, asking questions, people answering those questions etc.).
Related problems
- Can git automatically switch between spaces and tabs?
- Git 1.6.4 beta on Windows (msysgit) - Unix or DOS line termination
- git status shows modifications, git checkout -- <file> doesn't remove them
- Best practices for cross platform git config?
- How line ending conversions work with git core.autocrlf between different operating systems
- Can I use mSysGit and Cygwin's git?
- Dealing with files that Git refuses to reset?