嗨我想通过指定最大大小来限制我的存储库的大小,但是我找不到这样做的任何信息。这在技术上可行吗?Subversion版本库的限制大小
编辑:对不起,如果我不清楚。我想保留一个可以继续提交补丁的功能存储库,但是至少有一个较新版本的文档的最早版本可以自动删除以保留在sizelimit中。所以说我可以回去修改约67个,因为旧的已经被删除(最好保留提交消息)。
嗨我想通过指定最大大小来限制我的存储库的大小,但是我找不到这样做的任何信息。这在技术上可行吗?Subversion版本库的限制大小
编辑:对不起,如果我不清楚。我想保留一个可以继续提交补丁的功能存储库,但是至少有一个较新版本的文档的最早版本可以自动删除以保留在sizelimit中。所以说我可以回去修改约67个,因为旧的已经被删除(最好保留提交消息)。
这样做是对你的仓库的大手术。确保在真正存储库中完成此操作之前,您完全了解自己正在执行的操作。
您将无法做你的个人文件后,在做什么,但你可以在整个存储库这样做。你需要做的是切断存储库的历史尾巴。
这意味着,如果你有在你的仓库5000次修订版,你切断最早的1000个版本,你会只用最新的4000个版本的存储库中结束。
这样做需要转储/恢复周期,这意味着你必须禁用对仓库的写权限,而你的工作和重建信息库。
你不会失去浏览仓库时仍然可见的任何文件,但对于任何特定的文件历史记录可完全丧失(如果所有的修改,它是在第一个1000次修订)。很显然,如果某个文件在早期版本中被删除,那么剪切后就无法将其恢复。
另请注意,这样做的简单方法将重新编号从0开始的所有修订版,因此在上面的示例中,修订版5000将在截断后变为修订版4000。如果这会导致你的问题,你将不得不做额外的工作。
因此,假设我们想减掉最早1000次修订版,基本的工作流程是:
svnadmin dump [repository path] -r 1000:HEAD > repository.dump
。这将创建一个转储文件,其中只包含从1000年开始的修订。通过而不是使用--incremental
标志,转储文件中的第一个修订版将包含存储库的完整转储,因为它查看版本1000(不包括所有历史记录)。svnadmin create
创建一个干净的存储库,并将旧的存储库中的复制钩子目录。svnadmin load [new repository path] < repository.dump
加载最近的修订版本。如果要保留版本号,您必须从某处加载空白版本。您可以通过将修订版1:999转储到单独的转储文件中,然后使用svn dumpfilter从中删除所有内容,然后加载空白修订版,然后加载所需的修订版。这有点费劲,但会让你到那里。 ( - >驱动器 - >属性 - > ...我的电脑)
谢谢你在答案中的惊人努力。 – svandragt
有没有简单的方法来做到这一点。你真的需要重建存储库删除最旧的修订版本。没有一个SVN命令可以做到这一点。你所需要的过程大致是:
这个link会给你一些关于svndumpfilter的信息,这是整个操作的关键部分。
反思:过滤流给控制哪些文件/路径包含或排除的,但我不能确定它给出了修订的细粒度控制...
你不能做到这一点。 相反CVS,subevrsion不保留每修改整个源 但只有即将到来的版本之间的差异(也有点聪明但是对于这个问题并不重要)
我不认为CVS维护整个资源(只有差异)。 – Tarydon
由于SVN所有版本都基于的diff之前发生的事情,没有办法“清理”旧版本。如果您出于某种原因确实需要这样做,那么您必须每隔一段时间都要进行导出并将其重新导入到新的存储库中。
您是否试过查找“配额”? –
超过尺寸限制时你想要发生什么?该存储库将永久保留为只读状态? – fennec
有趣。我建议你看一下服务器上的一些提交钩子。尽管如此,您还是需要做一些手动的工作(即自己计算大小,并拒绝提交)。 –