svnadmin 加载重新编号修订

Posted

技术标签:

【中文标题】svnadmin 加载重新编号修订【英文标题】:svnadmin load renumbers revisions 【发布时间】:2014-02-20 14:06:53 【问题描述】:

我有一个包含多个项目的大型单一存储库。我正在使用 svnadminfilter 命令从完整的存储库转储中过滤掉几个项目。

我已经使用--drop-empty-revs 开关(并且没有--renumber-revs 开关)转储了完整的存储库,它删除了空修订并保留了特别是那些项目的相关修订。现在,在将转储重新加载到新位置的新存储库时,它会从 1 开始对这些修订进行重新编号,但我想保留这些修订。

svnadmin load 是否也有可用的开关?

【问题讨论】:

svnadmin load but keep the revision numbers 的可能重复项 【参考方案1】:

这里的技巧是创建空修订以创建填充,直到达到所需的修订号。

但是,在 svnadmin load 中没有开关可以做到这一点。您要么需要手动创建它们,要么使用rsvndump 之类的工具。

从手册页: --keep-revnums 保持输出中的修订号与存储库同步。这是通过在必要时插入空白修订来完成的。

修订号

转储输出中的修订号取决于选项和 给 rsvndump 的路径。如果你正在转储一个 存储库,您无需担心版本号 同步,当然。如果要转储子目录,则只有修订 更改此子目录的内容将出现在转储输出中。这 转储中的修订号是严格按顺序排列的,因此它们将 与原版不同。

如果您需要保留原始存储库中的修订号 (例如,如果错误跟踪器依赖于它们),您可以使用 --keep-revnums 标志。它使用空修订填充未更改子目录的修订。他们没有作者或日期 属性,但包含日志消息“这是一个空的修订版 填充。”。

(请注意,您很可能需要自己编译 rsvndump 版本。)


如果您想自己手动创建填充,您仍然可以编写提交列表的脚本。这是有关如何执行此操作的示例: http://hmcguirk.blogspot.ca/2010/06/subversion-trimming-old-commits-keeping.html

【讨论】:

【参考方案2】:

似乎svndumpfilter --drop-empty-revs 不能与svnadmin load 一起使用。因此,过滤时不要使用开关--drop-empty-revs。无论如何,空的修订版只占转储的最小比例。

【讨论】:

以上是关于svnadmin 加载重新编号修订的主要内容,如果未能解决你的问题,请参考以下文章

svnadmin 加载但保留修订号

尝试运行 svnadmin verify 会导致校验和不匹配

svnadmin 加载到现有目录?

svnadmin 转储因其中一个修订版中的错误而停止

SVN 转储/重新加载具有历史记录的特定版本

svnadmin dump repopath/* > dumpfile 不包括所有存储库和所有修订