9

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

如果我可以使用 git-svn(由 msysgit 提供)在这个存储库上工作,那就太棒了。

我有一段时间试图让存储库不让自己陷入 Windows 风格的行尾。

svn clone签出 git 存储库后:

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

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

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

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

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

4

6 回答 6

6

帮自己一个忙,不要弄乱行尾,保持原样。设置autocrlffalse.

Windows 中的任何半体面的文本编辑器都应该能够处理 unix 样式的行尾。

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

我认为,如果您只是事后才这样做,那对您没有任何好处。

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

于 2009-07-01T02:22:03.883 回答
1

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

于 2009-07-01T01:46:41.893 回答
1

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

于 2009-07-01T02:19:14.420 回答
1

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

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

您将主要使用 git,从上游存储库中提取,进行本地更改,本地分支等;在本地 git 项目上工作时通常会做的所有事情。

然后,当您想要提交到中央 svn 存储库时,请使用 svn 客户端。

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

于 2009-07-01T08:20:25.803 回答
0

通常,您需要像这样设置core.autocrlf选项:

git config core.autocrlf true

但是根据这篇文章,它似乎不能很好地与 git-svn 配合使用。可能值得在 SVN 存储库的第二个安全副本中试一试,看看它是否有效。

于 2009-07-01T02:14:59.530 回答
0

另一个很好的对话在这里core.autocrlf

于 2009-07-21T02:44:44.697 回答