限制Subversion存储库的大小

sva*_*agt 4 svn

嗨,我想通过指定最大大小来限制我的存储库的大小,但是我无法找到有关这样做的任何信息.这在技术上是否可行?

编辑:抱歉,如果我不清楚.我想保留一个功能存储库,我可以继续提交修补程序,但是至少有一个新版本的最旧版本的文档可以自动删除以保持在sizelimit中.所以说我可以回溯67个版本,因为旧的版本已被删除(理想情况下保留提交消息).

Jim*_*m T 13

这样做是您的存储库的大手术.在真正的存储库中实现这一点之前,请确保您完全了解自己正在做的事情.

对于单个文件,您将无法完成所需的操作,但您可以在整个存储库中执行此操作.您需要做的是切断存储库的历史尾部.

这意味着如果您的存储库中有5000个修订版,并且您切断了最早的1000个修订版,那么最终将获得一个仅包含最新版本的4000版本的存储库.

这样做需要转储/恢复周期,这意味着您在处理和重建存储库时必须禁用对存储库的写访问权限.

在浏览存储库时,您不会丢失任何仍然可见的文件,但任何特定文件的历史记录可能会完全丢失(如果对它的所有修改都在前1000次修订中).显然,如果在早期版本之一中删除了某个文件,那么在剪切后您将无法再将其恢复.

另请注意,这样做的天真方式将重新编号从0开始的所有修订,因此在上面的示例中,修订版5000将在截断后变为修订版4000.如果这会给你带来麻烦,你将不得不做额外的工作.

因此,假设我们想要丢失最早的1000个修订版,基本工作流程是:

  1. 使您的存储库脱机(或至少使其成为只读)
  2. svnadmin dump [repository path] -r 1000:HEAD > repository.dump.这将创建一个dumpfile,它只包含1000以后的修订版.通过使用该--incremental标志,dumpfile中的第一个修订版将包含存储库的完整转储,因为它查看了修订版1000(不包括所有历史记录).
  3. 创建一个干净的存储库,svnadmin create并从旧存储库中复制conf和hooks目录.
  4. 运行svnadmin load [new repository path] < repository.dump以加载最新的修订版.
  5. 将旧存储库移开(保留它以备份)并将新存储库移动到其位置.

如果要保留修订号,则必须从某处加载空修订.您可以通过将修订版1:999转储到单独的转储文件中,然后使用svn dumpfilter从中删除所有内容,然后加载空修订版,然后加载所需的修订版.它有点繁琐,但会让你到那里.