如何从一个非常大的仓库中获取项目的 svn 转储
Posted
技术标签:
【中文标题】如何从一个非常大的仓库中获取项目的 svn 转储【英文标题】:how to take svndump of a proejct from a very large repo 【发布时间】:2014-07-16 05:26:50 【问题描述】:我们有带有项目特定分支和标签的存储库。这里只是我的存储库的快照:
项目代码 =====>>分支机构 ---- R1 ---- R2 ---- R3
=====>> tags
--- R1_tag --- R2_tag
项目数据库 =======>> 分行 ---- R1 ---- R2 ---- R3
======>>tags
--- R1_tag --- R2_tag
现在我只想转储项目代码中的一个分支,然后将此转储加载到同一服务器上的其他存储库。 我尝试了以下操作,但 导致空修订 被加载到其他 repo 中。
svnadmin dump /path/to/repo | svndumpfilter include /proj > dump-file
svnadmin create /new/proj/repo
svnadmin load --ignore-uuid /new/proj/repo < dump-file
并且我无法按顺序运行以上命令,因为 Repo 太大,创建转储可能至少需要 10 个小时。此外,忽略 UUID 是为了删除与当前存储库的链接或任何其他原因? 请帮助使用特定命令。
【问题讨论】:
【参考方案1】:svndumpfilter
可以选择删除空修订,--drop-empty-revs
。
如果您没有使用--ignore-uuid
的特定理由,请尝试不使用它。如果它有效,你就不需要它。
您可以在没有中间转储文件的情况下简化转储-过滤-加载操作,如下所示:
svnadmin create /new/proj/repo
svnadmin dump /path/to/repo | svndumpfilter include /proj --drop-empty-revs | svnadmin load /new/proj/repo
【讨论】:
我确实尝试过,但“svnadmin dump /path/to/repo”从 rev#1 开始,但我需要的项目位于 rev#50,000 之后。所以这是正常的还是我在这里做错了什么。我也尝试了“--drop -empty revs”,但在加载时修订集仍然是空的,并且没有对修订执行任何操作 我对此进行了测试,它正确排除了空修订。还有另一个标志,--drop-all-empty-revs
,但我不确定区别。我不能在晚上之前再次测试,在此期间你可以试一试。以上是关于如何从一个非常大的仓库中获取项目的 svn 转储的主要内容,如果未能解决你的问题,请参考以下文章