svndumpfilter --drop-empty-revs 保持填充修订

Posted

技术标签:

【中文标题】svndumpfilter --drop-empty-revs 保持填充修订【英文标题】:svndumpfilter --drop-empty-revs keeps padding revision 【发布时间】:2012-03-20 16:53:43 【问题描述】:

我们正在将一个大型 svn 存储库(100k+ revs)拆分为几个较小的存储库。 我正在使用 svndumpfilter (v1.7.2) 来拆分转储和 svndumptool/sed 来过滤大转储。

一切正常,除了过滤后的转储中仍有一些“填充修订”,即使我使用了选项“drop-empty-revs”。

当我们只有不到 10% 的无用“填充修订”时,这并没有太大问题,但有时,新的 repo 只有几百个真正的修订,这些修订隐藏在 30k+ 的“填充修订”中。

这是我使用的命令和包含的修订版

svndumpfilter --drop-empty-revs --renumber-revs include /MyProj < MassiveOldRepo.dump > NewAllCleanRepo.dump

------------------------------------------------------------------------
r3453 | (no author) | 2005-09-29 17:27:54 +0200 (jeu., 29 sept. 2005) | 1 line

This is an empty revision for padding.
------------------------------------------------------------------------
r3454 | (no author) | 2005-09-29 17:28:27 +0200 (jeu., 29 sept. 2005) | 1 line

This is an empty revision for padding.
------------------------------------------------------------------------    

我想知道是否有办法在我过滤转储时不包含这些修订(无需手动从过滤后的转储中删除它们)。

编辑:我要补充一点,我对svndumpfilter 的使用会删除一些空修订,即第一个“真实”修订之前的修订和最后一个“真实”修订之后的修订。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,即存储库中已包含空修订。从 Subversion 1.7 开始,还有一个未记录的开关允许过滤所有空修订。

svndumpfilter --drop-all-empty-revs include / < oldrepos.dump > newrepos.dump

更多信息请访问grokbase。

【讨论】:

【参考方案2】:

经过数小时的测试,阅读 svndumpfilter 源代码(评论非常好,干得好!),我意识到这些空的修订不是来自我的过滤。

它们已经在我原来的转储中,日期为 2005 年。

结论:先检查你的数据!!

【讨论】:

【参考方案3】:

我无法确定您的情况,但就我而言,正是过滤导致了数千条填充消息出现在日志中。我通过包含这两个开关解决了它:

--drop-empty-revs --renumber-revs

第二个开关是这样的,例如,如果您的过滤器包含 rev 1000-1200,但随后排除了 1201-5000,则它包含的下一个 rev 将编号为 1201,而不是 5001,这将导致创建几千空填充转速。

【讨论】:

以上是关于svndumpfilter --drop-empty-revs 保持填充修订的主要内容,如果未能解决你的问题,请参考以下文章

svndumpfilter - 不支持的转储文件版本

SVNDumpFilter 在添加之前更改路径?

svndumpfilter --drop-empty-revs 保持填充修订

SVNDumpFilter 也包括分支?

是否可以通过 svndumpfilter 更改存储库中的目录名称?

SVN:最小化将项目移动到自己的仓库所需的转储