5

我正在尝试将 SVN 存储库转换为具有 18 年历史、超过 6000 个分支和超过 50 万次提交的 Bit Bucket。

Git svn 在大约 6 小时内完成了前 50k 次提交,并花了 3 天时间转换了接下来的 40k。由于失踪的作者以某种方式设法逃避了svn log,它已经崩溃了两次并停止了两次。

它已经到达了分支开始更广泛使用的回购部分。它现在已经慢到爬行。树枝给它带来了严重的悲伤。可能每 2-3 分钟提交一次。每个新分支似乎都进一步减慢了整个操作。

我不确定它在哪里花费时间。它是 i/o 还是 cpu 密集型操作?Atlassian 建议运行 SVN 所在的操作;在本地磁盘上- 没有网络旅行。我不认为这会有所帮助,因为它不会花时间从 SVN 中提取文件。它是否在分支上运行提交并且未在控制台上显示?

我认为将其拉入 Bit Bucket 是不可行的。我认为将所有新开发转移到 Bit Bucket 并继续运行 SVN 会更好。按照目前的转换速度,需要几年时间才能完成。

4

2 回答 2

2

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

有很多称为svn2git的工具,可能最好的是来自https://github.com/svn-all-fast-export/svn2git的 KDE 工具。我强烈建议使用该svn2git工具。这是我所知道的最好的,并且在你可以用它的规则文件做什么方面非常灵活。

您将能够轻松配置svn2gits 规则文件以产生您想要的结果,而且速度快了无数倍。

如果您不是 100% 了解存储库的历史,那么在将 SVN 存储库迁移到 Git 时,svnevereverhttp ://blog.hartwork.org/ ?p=763是一个调查 SVN 存储库历史的好工具。


尽管git-svn更容易开始,但除了灵活性之外,还有一些使用 KDEsvn2git而不是更优越的原因:git-svn

  • 通过(如果使用正确的),历史被重建得更好,更清晰,svn2git对于具有分支和合并等的更复杂的历史尤其如此
  • 标签是真正的标签,而不是 Git 中的分支
  • 标签包含git-svn一个额外的空提交,这也使它们不是分支的一部分,因此在fetch您提供命令之前,正常情况下不会获取它们,--tags因为默认情况下也只会获取指向已获取分支的标签。使用正确的 svn2git 标签是它们所属的地方
  • 如果您更改了 SVN 中的布局,您可以轻松地配置它svn2gitgit-svn最终您将失去历史
  • 您还可以轻松地svn2git将一个 SVN 存储库拆分为多个 Git 存储库
  • 或轻松将同一个 SVN 根目录中的多个 SVN 存储库合并到一个 Git 存储库中
  • svn2git正确的转换比使用正确的要快无数倍git-svn

你看,有很多原因导致git-svnKDE 更差而 KDEsvn2git更胜一筹。:-)

于 2017-03-14T14:47:16.403 回答
0

您可以只从当前存储库内容提交一个分支,而无需迁移整个 SVN 历史记录。

于 2017-03-13T14:46:14.007 回答