Git-SVN 克隆,这什么时候才能结束?

3

我开始跟随this的帖子执行从SVN到GIT的迁移。
6天前,我执行了这个命令:

git svn fetch

它仍在运行!我可以看到控制台日志不断更改修订号,也可以看到目录的大小不断增长。目前为止,它已经达到了12GB。

所以我的SVN仓库很大,我明白这一点,它还有许多分支,这并没有帮助。问题是是否有一种方法可以查看当前进度的百分比?我只想知道已完成多少百分比的获取。


2
甚至可能需要几个星期!!!如果你有一个庞大的代码库,我曾经有一个客户迁移了14GB的代码库,花了他3个星期时间!!!:-( - CodeWizard
1
@CodeWizard不帮忙啊!沮丧是没有用的,我需要一些真实的估算来说服我的团队这个问题迟早会解决。 - Ilya Gazman
1
只是说实话 :-) - CodeWizard
1
进度百分比大致应该是您在控制台中看到的修订版号除以您的 SVN 存储库中最大修订版号,再乘以 100。 - Vampire
2个回答

2

git-svn不是用于一次性转换存储库或存储库部分的正确工具。如果您想将Git用作现有SVN服务器的前端,则它是一个很好的工具,但对于一次性转换,您不应该使用git-svn,而应该使用更适合此用例的svn2git

有许多称为svn2git的工具,其中可能最好的是来自https://github.com/svn-all-fast-export/svn2git的KDE工具。我强烈建议使用那个svn2git工具。这是我知道的最好的工具,而且在您可以使用其规则文件做的事情方面非常灵活。

nirvdrum svn2git在内部使用git-svn,因此也不是正确的工具。使用KDE的svn2git,我个人需要大约2个小时才能转换需要使用git-svn一周的存储库。

如果您对代码库的历史记录不确定,那么在将其从 SVN 迁移到 Git 时,http://blog.hartwork.org/?p=763 上的 svneverever 工具是一款非常好用的调查历史记录的工具。

尽管使用git-svn更容易入门,但以下是一些进一步的原因,说明为什么使用KDE的svn2git而不是git-svn更加优越,除了它的灵活性:

  • 使用正确的svn2git(如果使用正确的工具),可以更好、更干净地重建历史记录,特别是对于包含分支和合并等复杂历史记录的情况。
  • 在Git中,标签是真正的标签,而不是分支。
  • 使用git-svn时,标签包含一个额外的空提交,这也使它们不属于分支的一部分,因此默认情况下只有指向已获取分支的标签才会被获取。除非您给命令加上--tags选项,否则普通的fetch命令将无法获取它们。使用正确的svn2git,标签就在它们应该在的位置。
  • 如果您在SVN中更改了布局,可以轻松地使用svn2git进行配置,但使用git-svn最终会丢失历史记录。
  • 使用svn2git,您还可以轻松地将一个SVN存储库拆分为多个Git存储库。
  • 或者将同一SVN根目录中的多个SVN存储库合并为一个Git存储库。
  • 使用正确的svn2git比使用git-svn转换速度快得多。

有许多原因说明git-svn比KDE的svn2git更差。 :-)


如果svn2git比git-svn好得多,那么向git-svn发送一个拉取请求并在“init”上发出警告,强调转换超出简单一次转换的陷阱是否有意义?以避免问题出现之前在git-svn标签下出现大量问题。 - Mykola Gurov
2
它只是用于完全不同的用例。git-svn 用于将 Git 作为现有 SVN 服务器的前端,以便将其提交回去。如果你用螺丝刀把钉子钉进墙里,上面应该贴着标签说“不要用我敲钉子”吗?虽然可以工作,但效果并不理想。 - Vampire

0

谢谢,我试过了,但回到我的原始问题。您认为我能否根据.git大小与svn存储库大小进行任何假设? - Ilya Gazman
不行,因为每个 SVN 提交都会转换成 Git 提交,并且它是基于提交数量的,10 万个以上的提交可能需要几天甚至更长时间。 - CodeWizard
1
你确定nirvdrum的svn2git更快吗?如果是这样,我真的很想知道。据我所知,它在内部使用了svn2git并进行了一些额外的步骤,因此实际上应该比纯粹的git-svn更慢,并且具有一些相同的缺点。 - Vampire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接