Subversion有单独文件的EOLs转换设置的可能性。实际上,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转换为相应的.gitattributes值,并反之亦然。
其中一种解决方案是服务器端:您可以在SVN存储库中安装SubGit,并且只需使用SubGit创建的纯Git界面即可:
$ subgit install path/to/svn/repository
然后在客户端上克隆它,并将core.eol设置为“crlf”以适用于Windows系统,而对于其他操作系统则设置为“lf”(默认值为“lf”)。
$ git clone <URL> working_tree
$ cd working_tree
$ git config core.eol crlf
之后,Git将以与SVN相同的方式运行。
另外,在客户端上,您可以使用SmartGit:您可以使用它克隆SVN存储库(而不是打开现有的git-svn存储库)---然后它将把svn:eol-style转换为.gitattributes。对于这种情况,不需要额外的core.eol设置,SmartGit会处理它。