我很久以前就创建了一个 SVN 服务器。我一直在存储一些二进制文件(doc 文件)和代码。每次编辑后,大小都会增加,因为 SVN 会保存二进制文件的新副本。现在 svn 占用了大量空间。
Q1. 我想删除二进制文件的所有先前版本,但保留代码的先前版本,我该怎么做?
Q2. SVN 中是否有任何可以自定义的设置?例如“特定文件夹不存储超过 10 个修订版本”。
答案1
在 Subversion 中销毁数据的唯一方法是将存储库转储到文件中;运行它svndumpfilter
并再次加载。svndumpfilter 仅适用于路径,而不适用于修订,因此,为了您的目的,我建议您svn export
在执行以下操作之前,先设置您的二进制文件夹:
svnadmin dump <repo root> > file.dump
cat file.dump | svndumpfilter exclude <repo path containing binaries> > file-new.dump
svnadmincreate <new repo root>
svnadmin load <new repo root> < file-new.dump
这将为您留下一份存储库副本,包括完整历史记录,但没有有问题的路径;您将在历史记录中看到对这些路径进行提交的空修订版本。(有一些选项可以svndumpfilter
删除这些,但在大多数情况下,您可能希望保留修订编号。)
至于自动化,您可以使用提交后钩子来编写此过程的脚本,但这在大型存储库上非常耗时。如果您不需要它们的历史记录,那么最好根本不要在 SVN 中存储二进制文件。