有什么办法可以加快 git svn 的速度吗?

eei*_*lar 8 git git-svn bitbucket-server svn2git

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

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

它已经到达了仓库中分支开始被更广泛使用的部分。现在它已经慢得像爬行一样。树枝给它带来了严重的悲伤。可能会降低到每 2-3 分钟一次提交。每个新分支似乎都会进一步减慢整个操作的速度。

我不知道它把时间花在哪里了。它是 I/O 或 CPU 密集型操作吗?Atlassian建议在SVN所在的地方运行操作;放在本地磁盘上——没有网络行。我不知道这是否有帮助,因为它不需要花时间从 SVN 中提取文件。它是否在分支上运行提交并且未在控制台上显示?

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

Vam*_*ire 4

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

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

您将能够轻松配置svn2git规则文件以产生您想要的结果,并且速度要快得多。

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


尽管git-svn更容易上手,但除了其灵活性之外,还有以下一些进一步的原因说明为什么使用 KDE 更优越svn2gitgit-svn

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

你看,有很多原因可以解释为什么 KDEgit-svn更差而 KDEsvn2git更优越。:-)