我有一个大型存储库,我想删除最旧的 6,000 个修订版。如果我也可以在中间删除不需要的修订组,那就太好了。
我已经想出了如何消除不需要的文件和分支,但我仍然留下了很多不需要的修订。
谢谢
我有一个大型存储库,我想删除最旧的 6,000 个修订版。如果我也可以在中间删除不需要的修订组,那就太好了。
我已经想出了如何消除不需要的文件和分支,但我仍然留下了很多不需要的修订。
谢谢
您需要使用svnadmin 转储命令,您可以从任意修订创建转储文件,然后过滤它以进入/排除某些路径。语法是:
svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]
一个例子:你想从你的存储库中排除修订版 10-99:
svnadmin dump REPOS_PATH -r 0:9 > my_dump_file.dmp
svnadmin dump REPOS_PATH -r 100:HEAD > my_dump_file.dmp --incremental
有一些问题:
在我的示例中,您在 rev 10-99 中添加的 rev 100 之后的文件更改将创建一条错误消息,您需要在之前从 repo 中删除它们
删除以后用作复制源的文件也会导致转储文件出错。
这两个限制你大多可以规避,但它需要更多的转储/过滤/加载周期迭代,因此需要更多时间。何时处理这些边界情况取决于您。
使用 svnbook 读取svnadmin dump和svndumpfilter的详细信息