顛覆了的可能性單個文件的EOL轉換設置。實際上Git也有.gitattributes文件('text'和'eol'屬性)。 對於一般情況core.autocrlf是不夠的。
如果將其設置爲false,那麼所有svn:eol-style = native的文件將以git-svn工作副本結束LF行,這對於Windows而言並不是預期的。
如果將其設置爲true,則所有行結束符都將轉換爲LF,並將以LF的形式(始終)發送給SVN。
實際上svn:eol-style=unset
應當對應於 '-text' git的屬性(這意味着不轉換),svn:eol-style=LF
---爲 'EOL = LF' 屬性和svn:eol-style=CRLF
---爲 'EOL = CRLF' 屬性; svn:eol-style=native
是依賴於系統的,所以可以通過未版本化的eol設置來控制,所以相應的git屬性是'!eol'(這意味着從.git/config的core.eol
獲得EOL設置)。
除了git-svn,您可以使用任何解決方案將svn:eol-style自動轉換爲單個文件的相應.gitattirbutes值,反之亦然。 一種解決方法是在服務器端:安裝SubGit到你的SVN倉庫,只使用純Git的界面,SubGit將創建:
$ subgit install path/to/svn/repository
# Git interface with correct .gtattributes repository will appear at path/to/svn/repository/.git
# you should setup an access to it
然後你複製它的客戶端,並設置core.eol爲「CRLF」對於Windows和對其他操作系統的「lf」(默認值是'lf')。
$ git clone <URL> working_tree
$ cd working_tree
$ git config core.eol crlf #for Windows only
然後,Git的行爲將與SVN相同。
或者在客戶端可以使用SmartGit:你可以克隆SVN倉庫(不打開現有的git-svn倉庫)---然後它會將svn:eol-style轉換爲.gitattributes。這種情況下不需要額外的core.eol設置,SmartGit會關心它。
我有點困惑這個答案..這是所有非常有用的信息,但我想也許你誤解了這個問題。我無法觸及SVN上的任何內容,也無法讓人們使用svn:eol-style,這個想法是,即使知道我在使用git,也沒有人會這麼做。所以無論我需要改變什麼設置都應該在git方面。這有助於澄清這個問題嗎?順便說一下,我用git svn克隆的倉庫當時是空的,所有內容都是在第一個dcommit之後從git中獲得的。 – 2012-08-10 11:00:30