首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速初始git-svn抓取

加速初始git-svn抓取
EN

Stack Overflow用户
提问于 2010-10-13 08:11:33
回答 8查看 13.2K关注 0票数 40

我有一个很大的存储库,100,000+修订版,具有非常高的分支因子。使用git-svn的完整SVN存储库的初始获取已经运行了大约2个月,并且只有60,000个版本。有没有什么方法可以加速这件事?

由于git-svn像筛子一样泄漏内存,我已经定期终止并重新启动fetch。传输是通过本地LAN进行的,因此链路速度应该不是问题。存储库位于由专用光纤通道阵列支持的专用机器上,因此服务器应该具有足够的吸引力。我能想到的唯一另一件事是从SVN存储库的本地副本进行克隆。

其他人在类似的情况下做了什么?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-03-22 14:29:44

显然没有好的答案。在git-fast-import上正在做一些工作,但还没有准备好进入黄金时间。他们仍在试图弄清楚如何检测和表示“svn cp”操作。一个亮点是,列表中的某个人提出了git-svn的优化,似乎产生了很大的影响。

http://permalink.gmane.org/gmane.comp.version-control.git/168718

票数 14
EN

Stack Overflow用户

发布于 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选项没有该特性,您也可以在原始克隆完成之前添加它!

票数 24
EN

Stack Overflow用户

发布于 2015-03-20 18:24:14

在一个提交了20k的存储库中,我遇到了类似的问题。在我的例子中,结果是subversion中有一些奇怪的标记导致了问题。有一些标签复制了/而不是/trunk。这会导致git svn fetch进入无限循环。我通过分块转换修复了它。

代码语言:javascript
复制
git svn fetch -r0:1000
git svn fetch -r0:2000
git svn fetch -r0:3000

注意输出,如果你没有看到新的r...偶尔会有一些地方出问题。使用git log --all查看转换完成的程度。假设你到了1565。然后像这样继续抓取。

代码语言:javascript
复制
git svn fetch -r1567:2000

它非常单调乏味,但它完成了工作。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3919962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档