git-svn可以像原生的subversion客户端一样处理CRLF吗?

时间:2009-07-01 01:35:13

标签: svn git git-svn newline eol

我有一个托管在Linux上的subversion存储库,但只能通过Windows客户端访问,因为它是大型Windows应用程序的源代码。

如果我可以使用git-svn(由msysgit提供)在这个存储库上工作,那将是非常棒的。

我有一段时间试图让存储库不会因为窗口样式行结尾而陷入困境。

svn clone结帐git存储库之后:

  • core.autocrlf = true显示对存储库中实际使用LF的任何文件的修改。
  • core.autocrlf = input显示对存储库中实际使用LF的任何文件的修改。
  • core.autocrlf = false显示对所有内容的修改。

这里最好的选择是什么?我应该使用core.autocrlf = true并对受影响的文件进行LFCRLF更改吗?

我非常接近于把我的Subversion工作副本放到git存储库中。这将是一个糟糕的解决方案,但至少会允许本地分支和存储。将文件添加到subversion时,继续添加文件显然会变得非常痛苦。

编辑:对于有兴趣的人。如果你在Windows上,git-svn是一种皇室般的痛苦。 hasen j的答案可能是正确的,但是如果不引起团队中其他开发人员的愤怒,我就无法听从他的建议。

我基本上放弃了这个问题,因为它不会导致合理的结果。希望下一个Google Summer of Code能够吸引那些希望获得“Windows上适当的git-svn支持”项目的人。见http://git.or.cz/gitwiki/SoC2009Ideas#Propergit-svnsupportonWindows

6 个答案:

答案 0 :(得分:6)

帮自己一个忙,不要乱用行尾,保持原样。将autocrlf设为false

Windows中任何一个不错的文本编辑器都应该能够处理unix样式的行结尾。

  

core.autocrlf = false显示对所有内容的修改。

我认为,如果你只是在之后那么,它对你没有任何好处。

您必须删除此存储库,将autocrlf设置为false,然后然后执行克隆。

答案 1 :(得分:1)

我有类似的问题。 为了解决这个问题,在git-svn克隆之后,我将unix2dos应用于所有文件,因为在我的情况下,SVN repo中的所有文件都使用了CRLF。所以,我想你应该在git-svn之后手动尝试CRLF-LF转换。

答案 2 :(得分:1)

我通常使用git-filter-branch清除我的git-svn克隆recode dos..ascii -f。 (这也有助于latin1..utf8转换。)

答案 3 :(得分:1)

由于我的其他答案不适合你,这是处理这种情况的另一种方法:

同时使用svn和git;在同一个工作目录中。

你将主要使用git,从上游存储库中取出,进行本地更改,本地分支等;当你在本地git项目上工作时通常所做的一切。

然后,当你想提交中央svn repo时,使用svn客户端。

我有一些这方面的经验,只是我不会做svn commit,而是用svn diff创建一个补丁并提交它(因为我无论如何都没有提交访问权限)。

答案 4 :(得分:0)

通常,您需要设置core.autocrlf选项,如下所示:

git config core.autocrlf true

但根据this article,看起来它与git-svn并不是很好。可能值得在SVN存储库的安全第二个副本中查看它是否有效。

答案 5 :(得分:0)

关于core.autocrlf的另一个好conversations here