我有一个很大的存储库,100,000+修订版,具有非常高的分支因子。使用git-svn的完整SVN存储库的初始获取已经运行了大约2个月,并且只有60,000个版本。有没有什么方法可以加速这件事?
由于git-svn像筛子一样泄漏内存,我已经定期终止并重新启动fetch。传输是通过本地LAN进行的,因此链路速度应该不是问题。存储库位于由专用光纤通道阵列支持的专用机器上,因此服务器应该具有足够的吸引力。我能想到的唯一另一件事是从SVN存储库的本地副本进行克隆。
其他人在类似的情况下做了什么?
发布于 2011-03-22 14:29:44
显然没有好的答案。在git-fast-import上正在做一些工作,但还没有准备好进入黄金时间。他们仍在试图弄清楚如何检测和表示“svn cp”操作。一个亮点是,列表中的某个人提出了git-svn的优化,似乎产生了很大的影响。
http://permalink.gmane.org/gmane.comp.version-control.git/168718
发布于 2010-10-20 11:35:31
在工作中,我使用git-svn来处理大约170000个版本的SVN代码库。我所做的是使用git-svn init + git-svn fetch -r...将我的初始获取限制为合理数量的修订。您必须小心选择实际位于所需分支中的修订版本。所有的功能都是完整的,即使是截断的历史记录,除了git-blame,它显然将所有比起始版本旧的行都归因于第一个版本。
你可以用ignore-path进一步加快速度,修剪掉你不想要的子树。
您可以稍后添加更多修订,但这将是痛苦的。你将不得不重置rev-map (遗憾的是,我甚至写了git-svn reset,我不能马上说它是否会删除所有的修订,所以它可能是手动的)。然后使用git-svn fetch more revisions和git-filter-branch将旧的根重新设置为新树的父目录。这将重写每次提交,但不会影响源blob本身。当人们对svn repo进行大规模重组时,您必须进行类似的手术。
如果您实际上需要导出所有修订版(例如,用于迁移),那么您应该考虑使用svn--+ git-fast-import。可能有一个添加了rev标签以匹配git-svn的版本,在这种情况下,您可以快速导入,然后直接移植到svn remote中。即使现有的svn-fast-export选项没有该特性,您也可以在原始克隆完成之前添加它!
发布于 2015-03-20 18:24:14
在一个提交了20k的存储库中,我遇到了类似的问题。在我的例子中,结果是subversion中有一些奇怪的标记导致了问题。有一些标签复制了/而不是/trunk。这会导致git svn fetch进入无限循环。我通过分块转换修复了它。
git svn fetch -r0:1000
git svn fetch -r0:2000
git svn fetch -r0:3000注意输出,如果你没有看到新的r...偶尔会有一些地方出问题。使用git log --all查看转换完成的程度。假设你到了1565。然后像这样继续抓取。
git svn fetch -r1567:2000它非常单调乏味,但它完成了工作。
https://stackoverflow.com/questions/3919962
复制相似问题