2011-04-05 38 views
3

我有一個遠程SVN存儲庫和一個本地git存儲庫。使用git-svn我已經將git鏈接到SVN,併成功使用git svn rebase,git svn dcommit來拉和推送到遠程SVN存儲庫。使用git-svn與來自VCS的提交不一致的行結束符

但是,當其他人用SVN查看我以前的git編輯文件並嘗試在VS2010中打開它們時,它們會收到一個對話框,告訴它們行結束是不一致的。

我讀過一些關於core.safecrlf選項的東西在git config中,但是會解決我的問題嗎?我有一些其他人在檢查,但我們都在運行窗口 - 我認爲行結束會是一樣的?

設置core.safecrlf是否在結帳和提交時保留相同類型的行結束符?

+0

停止破壞我的行結局可能! – 2011-04-05 08:56:52

回答

4

最近我一直在處理這個問題。默認情況下,Windows上的Git設置爲core.autocrlf = true。會發生什麼是您的文件從SVN回購利用CRLF行結尾檢出,但是用unix樣式(LF)行結尾提交。當你dcommit這些變化,我相信這些文件被推送到SVN服務器與unix樣式的行尾。現在,當某人使用SVN檢出這些文件時,不會執行行結束轉換。

您可以設置core.autocrlf = false以便不進行轉換。如果你都在Windows上工作,你不應該有任何問題。如果您使用* nix用戶共享SVN回購,那麼您可能會開始出現不一致。這是autocrlf選項的原因。回購應該保持一致,並且由於Linux不喜歡和CRLF一起玩,所以這個autocrlf應該設置爲true。

+0

只需注意,一旦設置被更改,您應該驗證所有行結束是否如您所期望的那樣。要做到這一點,你應該改變core.autocrlf屬性,然後拉動Git回購。現在檢查文件的行尾。最後,將所有更改提交爲單個提交。從這一點開始,您只需驗證您是否更改了設置的任何新環境(新機器,重新安裝等)的此值。 – 2018-02-05 14:27:54

1

行結局問題是一個衆所周知的git-svn頭痛。我會建議使用SmartGit來處理您的存儲庫。我尊重svn:eol-style的值,以便在Git中使用正確的EOL(將其轉換爲相應的.gitattirbutes值)。你也可以通過適當的修改.gitattirbutes來控制svn:eol-style的值。

如果您有權訪問服務器,可以使用其他方法:只需將SubGit安裝到您的SVN服務器。然後,將在服務器上創建鏈接的Git存儲庫,以便每次推送到它都將自動轉換爲SVN,反之亦然。它還將svn:eol-style轉換爲.gitattirbutes。

所以我會推薦這些解決方案之一,但不是(我知道)在Windows上痛苦地慢的git-svn。

相關問題