减少 SVN 存储库大小

Posted

技术标签:

【中文标题】减少 SVN 存储库大小【英文标题】:Reduce the SVN repo size 【发布时间】:2016-05-05 13:29:41 【问题描述】:

我有一个巨大的 SVN 存储库,450K+ 修订,正在尝试减少历史记录的大小以仅获取最后数千个修订,例如 20K 并在新的存储库中恢复它,我尝试了很多方法来实现这一点,但没有奏效,下面是我记得我使用过的方法

1- 正常转储,使用下面的命令,花了两天时间,仍在运行,转储大小超过了 repo 大小 8 倍(repo 大小为 70G,在我终止转储进程之前,转储的大小达到了500GB)

svnadmin 转储 demo2/ -r420000:HEAD > /share/svnbkup/split.dump 警告 0x0001:Mergeinfo 引用最旧转储 > 修订 (r420000) 之前的修订。加载此转储可能会导致无效的合并信息。

2- 使用相同的命令,但我使用了--incremental,转储不可恢复

svnadmin dump demo2/ -r420000:HEAD --incremental > /share/svnbkup/split.dump * 转储修订版 420136。 警告 0x0000:引用版本 419907 中的数据,该版本早于 >oldest dumped 版本 (r420000)。将此转储加载到空的 >repository 将失败。 警告 0x0001:Mergeinfo 引用最旧转储修订 (r419907) 之前的修订。加载此转储可能会导致无效的合并信息。 * 转储修订版 420137。

3- 我使用了上述步骤中的转储并尝试使用 svndumpfilter,但它什么也没做,

4- 我尝试按原样恢复转储,

【问题讨论】:

【参考方案1】:
    找到 LOWER 边框,它不会有超出范围的引用(仔细阅读警告 - 现在您必须至少包含来自 r419907 的内容) 不要将--incremental 用于第一个基本转储 将第 1 步中找到的范围切片成小切片,然后依次转储小范围(第二个及以后 - 使用 --incremental 选项) - 时间更短,如果出现任何错误,您只需重新完成一小部分转储

关于谵妄的权利

忘记历史数据,只在新仓库中传输 HEAD

【讨论】:

我尝试了您提到的步骤,我有另一个转储,其中缺少超出范围的引用,但是无论我是从缺少引用的转储还是包含大量引用的转储开始,我都会收到同样的错误,缺少路径和文件,如果不使用'--incremental',转储大小会很高,这超出了整个事情的目的对于SVN来说仍然是新的,并且没有太多经验它 @user3179814 - 在转储前验证|修复原始存储库(看起来已损坏),文本转储必须大于相应的存储库部分,但加载的转储必须产生更少的回购规模 抱歉回复晚了,我尝试恢复dump,5K rev dump,repo的大小还是一样,只是从70G减少到61G,我尝试运行svnadmin verify ,并且它表明 repo 没有损坏,这是我知道检查 svn repo 的唯一方法

以上是关于减少 SVN 存储库大小的主要内容,如果未能解决你的问题,请参考以下文章

mysql 生产库大表delete

从 svn 存储库更新返回“无法读取块大小”错误

减少git存储库大小

svn 存储库因构建而失控

前端组件库大合集-必备收藏

如何通过非交互方式压缩除最近提交之外的所有提交来减少臃肿的 Git 存储库的大小?