2009-10-16 49 views
2

我只是完成轉換的Subversion倉庫使用從SVN遷移到git後,如何修復行結束問題?

git svn clone--stdlayout --authors-file=ourcommitters.txt svn://svn.internalserver.com 

這樣做雖然Git裏,我有git的標誌「core.autocrlf」設置爲「真」 - 只是在重要的情況下。

經過很長時間,命令完成。我清理了一下所產生的git倉庫(刪除無用的分支,創建標籤等),現在一切都看起來非常好,並且運行良好。該存儲庫託管在Linux機器上,並將其克隆到其他Linux機器上工作得非常好。

但是,我注意到一個問題:在將存儲庫克隆到Windows框中時,某些文件在切換分支時似乎被修改。舉例來說,我這樣做:

git clone svn://our.git.server/foo 
git status       # Everything is clean 
git checkout -t origin/maintenance # Switch to maintenance branch 
git status       # Everything is clean 
git checkout master     # Back to master branch 
git status       # A few files are modified! 

當執行「git的差異」,我注意到,修改後的文件似乎只是他們的行結尾不同。在研究這一點時,我們注意到這些文件在Subversion中使用CR-LF行結尾(而不是LF行結尾)進行了意外檢查,並且此錯誤已轉換爲我們的git存儲庫。

有沒有辦法解決這個問題在我們的存儲庫(迄今爲止,它不經常被克隆,所以一些歷史重寫將罰款),而不做'清理提交'之類的?也許我們可以以某種方式默默地重寫受影響的對象?

或者,我們可以在Subversion中修復 - 然後再次發出上面的'git svn clone'命令。這似乎增量式工作(它只會選擇最後一行結束脩復提交),但是又一次 - 它創建一個提交。我想知道我是否可以解決這個問題。

+0

我從來沒有用'混帳svn'工作,但看看這個問題: http://stackoverflow.com/questions/1575682/cant-seem-to-discard-changes-in-git –

回答

1

原來,最簡單的方法是修復有故障的文件在Subversion中,然後用克隆再次

git svn clone--stdlayout --authors-file=ourcommitters.txt svn://svn.internalserver.com