我在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。 –