我正在尝试对一个非常大的 SVN 存储库进行 git svn 克隆。我已经使用 git svn clone
完成了早期的迁移具有完整的分支、标签和历史记录,并且一切顺利。
但是这次运行了一段时间后的脚本抛出了一个错误:libsvn: Out of memory - terminating application.18 [main] perl 13884 cygwin_exception::open_stackdumpfile: Dumping stack trace to perl.exe.stackdump
我到处研究,但找不到与此相关的任何内容。如果有人遇到类似的错误,我将不胜感激任何建议。
最佳答案
git-svn
是 不是 用于一次性转换存储库的正确工具。如果您想使用 Git 作为现有 SVN 服务器的前端,这是一个很好的工具,但对于一次性转换,您应该 不是 使用 git-svn
,但是 svn2git
这更适合这个用例并且不应该遭受 OOM 错误。
有很多工具叫做 svn2git
,最好的可能是来自 https://github.com/svn-all-fast-export/svn2git 的 KDE 版本。 .我强烈建议使用 svn2git
工具。这是我所知道的最好的,而且它的规则文件非常灵活。
如果您不是 100% 了解您的存储库的历史,svneverever
来自 http://blog.hartwork.org/?p=763是一个很好的工具,可以在将 SVN 存储库迁移到 Git 时调查其历史记录。
即使 git-svn
(或错误的 svn2git
在您的情况下)更容易开始,以下是使用 KDE svn2git
的一些进一步原因而不是 git-svn
优越,除了它的灵活性:
svn2git
重建得更好更干净(如果使用正确的),对于具有分支和 merge 等更复杂的历史记录尤其如此git-svn
标签包含一个额外的空提交,这也使它们不属于分支,所以正常 fetch
除非你给 --tags
到命令,默认情况下,也只获取指向已获取分支的标签。正确的 svn2git 标签是它们所属的地方 svn2git
轻松配置它, 与 git-svn
你最终会失去历史svn2git
您还可以轻松地将一个 SVN 存储库拆分为多个 Git 存储库 svn2git
,转换速度快了无数倍比git-svn
原因有很多
git-svn
更糟的是 KDE svn2git
是优越的。 :-)
关于git - 将大型 SVN 存储库迁移到 Git 失败的内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40999651/