Věčný boj, částečně daný Windows, ale především nějakým dobrákem Git-vývojářem, který se snažil být nápomocný. Co je verzovacímu systému po konci řádků? Tady jsou poznámky, co jsem si udělal asi před půl rokem (v “originále”; občas prosím omluvte jazykovou rozpolcenost):
- this is really fucked up
- CRLF is fucked up
core.autocrlf false
is fine until you want to enforce LF in the repo using* text=auto
- when you do that, Git ignores
core.autocrlf
and will look atcore.eol
to see how to handle files on checkout, and it will usenative
by default which will convert LF to CRLF - there is NO WAY to tell Git “leave files alone on checkout” if you have .gitattributes. this is really sad
* text=auto eol=lf
is fucked up too because for some reason, theeol=lf
will also be applied to binary files.- (Git cannot force CRLF in the repo, only LF.)
- (!eol – http://blog.subgit.com/tag/lf-will-be-replaced-by-crlf/)
- Good read: http://www.hanselman.com/blog/YoureJustAnotherCarriageReturnLineFeedInTheWall.aspx
Naštěstí to vypadá, že Git 2.10 to opravil! Mělo by tak fungovat jednoduché * text=auto eol=lf
v .gitattributes. Hurá!
No vidíš, že nakonec píšeš anglicky.
Nebude vyhnutí, staré poznámky přepisovat nebudu.. Čas upravit první post.
A díky za první komentář tady 🙂
“Co je verzovacímu systému po konci řádků?”
Že by třeba kvůli “diff” nad textovými soubory, které mohly přijít z různých platforem? Když verzovací systém konce řádků neřešil, zase si lidé stěžovali na vadnou detekci změn, pokud soubor neupravili, ale jen jim editor změnil konce řádků na nativní.
IMO se to mělo udělat pořádně, nebo vůbec. Chování v 2.10 už je asi vyloženě dobré, ale trvalo to asi 15 major verzí (nebo kolik) a je to jediná část Gitu, která mě opakovaně frustrovala.