我在Windows机器上使用git,nuget和Visual Studio 2015。Git,Nuget和行结尾。为什么要这么辛苦?
我有一个项目,我已经建立到内容只nuget包。包的内容是两个文件:
File1.ttinclude File2.ttinclude
这些文件必须具有CRLF行结束。我认为这是Windows的默认设置。我已经试过各种git的设置,并在我的git全局设置,在下面解决:
autocrlf = false
我可以将文件推送到远程的回购和克隆远程遥控器和文件显示仍有CRLF行结束。
我的问题是当我试图将nuget包纳入另一个项目。 每当我运行install-package(或者从包管理器执行它)时,文件将被添加到LF行尾的项目中,并且所有地狱崩溃。
我试过autocrl=true
,我已经尝试在.gitattributes中添加*.ttinclude text eol=crlf
作为nuget包和需要包含该包的项目。似乎没有任何工作,我很茫然。
如何获取nuget以安装纯内容包并保留正确的行结尾?
我已经创建了以下git别名,我将它添加到项目时使用。它修复了行结束问题,直到更新nuget包。
alias.fixeol=!git add . -u && git commit -m "start eol fix" && git rm --cache -r . && git reset --hard && git add . && git commit -m "end eol fix"
更新1: 我只是想到了这一点,因为它也可能是问题。我们使用TeamCity作为构建服务器,这就是从我的源代码构建nuget包的过程。我没有设置它,所以我不是100%如何设置它。构建服务器上的git是否也需要以某种方式进行安装?怎么样TeamCity设置?
UPDATE 2: 因此,我刚刚检查了.nupkg的nuget包内容,并且行尾是LF,所以它必须是构建服务器。现在我只需要弄清楚在构建服务器上需要设置哪些git,并将其更改为其他项目?
UPDATE 3 - 已解决: 这是一个TeamCity问题。 https://confluence.jetbrains.com/pages/viewpage.action?pageId=48105844
设置'将行结束符转换为CRLF'选项以真正解决问题。当然,我不确定为什么它是一个开始的问题。我在本地autocrlf = false。这些文件是CRLF。如果没有设置该功能相当于具有autocrlf = false的TC,那么它不应该是刚刚工作?目前,我只在这个特定的项目上将该选项设置为true,因为它只是一个需要CRLF的内容包。我不确定它会如何影响其他项目。
TeamCity的,这是确实是一个问题。看到我编辑的答案。 – VonC
不要依赖'core.autocrlf',使用'.gitattributes'。 –
这个问题最终发生在TeamCity和TeamCity服务器构建忽略gitattributes。 –