在Windows上使用Git,我想确保存储库中的标准化行结尾并且工作目录中没有转换?
我们现在使用带有* text=auto
的.gitattributes文件来确保Git存储库已规范化。使用.gitattributes文件时,存储库中的所有文本文件都存储为LF。那样就好。问题是当它们被写到工作目录时,即使我们没有core.autocrlf=true
,它也会将行结尾更改为core.eol。使用.gitattributes时,它应该具有与写入工作目录时不使用.gitattributes相同的行为。它应该仅在core.autocrlf=true
时更改行结尾。我会提交一个错误。标记为红色是我认为应该改变的行为。
在我的用例中,我构建的是构建服务器,包括TeamCity和Visual Studio Online,并且无法设置core.autocrlf=input
。我将使用开源F#编译器作为示例。该项目使用* text=auto
,但未在.gitattributes中指定*.fs text eol=lf
。如果从GitHub存储库下载il.fs,则行结尾为LF。当它们由构建服务器签出时,它们是CRLF。这意味着校验和不匹配,使用SourceLink的源索引不起作用。
作为一种解决方法,我建议我们在.gitattributes文件中设置*.fs text eol=lf
。不是每个人都对此感到满意。
此外,有1500个声望点的人可以将此标记为“sourcelink”。