【发布时间】:2015-07-11 17:18:15
【问题描述】:
我有一个托管在免费增值网站上的 SVN 存储库,具有最大存储库大小。当我接近这个容量时,我知道我签入的文件我知道我可以永久删除以释放磁盘空间。如何告诉 SVN 一个文件不仅可以删除,还可以删除它的历史记录?
【问题讨论】:
标签: svn repository delete-file obliterate
我有一个托管在免费增值网站上的 SVN 存储库,具有最大存储库大小。当我接近这个容量时,我知道我签入的文件我知道我可以永久删除以释放磁盘空间。如何告诉 SVN 一个文件不仅可以删除,还可以删除它的历史记录?
【问题讨论】:
标签: svn repository delete-file obliterate
我认为 subversion 没有办法告诉不要对特定文件进行版本控制,或者至少在删除文件时忘记该文件。因为它违背了版本控制系统的目的。如果您有本地存储库,则可以通过一些调整来实现这一点。但是,如果没有对存储库的任何管理员访问权限,就不可能做到这一点。
如果有帮助,rsvndump 是一个转储远程存储库的工具。有了这个,您将能够将存储库转储到您的本地系统。要删除不需要的文件,您可以使用此命令“cat xxx-svn-dump | svndumpfilter exclude $file > new-svn-dump”。虽然这样您可以减小存储库的大小,但您将无法使用此内容更新原始存储库。
【讨论】:
看看这个:
http://subversion.apache.org/faq.html#removal 说:
在某些特殊情况下,您 可能想销毁所有证据 文件或提交。 (也许有人 不小心犯了机密 文件。)这并不容易,因为 颠覆是故意设计的 永远不会丢失信息。修订是 以一棵树为基础的不可变树 其他。从中删除修订 历史会造成多米诺骨牌效应, 在随后的一切中制造混乱 修订和可能无效 所有工作副本。
此 SO 答案中的可能解决方案:
【讨论】:
您还可以修剪您的历史记录。假设您有 100 个修订,您可以保留最新的历史记录,例如 50 个修订。这也可能会减少您的 subversion 存储库的大小。
svnadmin dump /path/to/current/repo -r50:100 > newsvn.dump
# you can delete the old repo and then
svnadmin create /path/to/new/repo
svnadmin load /path/to/new/repo < newsvn.dump
【讨论】: