6

我们将一个大的 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删除了一些空修订,第一个“真实”修订之前的那些和最后一个“真实”修订之后的那些。

4

3 回答 3

8

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

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

更多信息可以在grokbase找到。

于 2013-10-08T13:30:01.187 回答
4

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

它们已经在我原来的转储中,并且可以追溯到 2005 年。

结论:首先检查您的数据!

于 2012-03-21T08:49:47.307 回答
2

我无法确定您的情况,但在我的情况下,过滤导致成千上万的填充消息出现在日志中。我通过包括这两个开关来解决它:

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

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

于 2013-02-05T23:12:37.017 回答