如何修剪Subversion中的旧版本?

时间:2008-11-19 20:28:10

标签: svn

如何从我的开发subversion存储库中删除旧版本?我保留了一个颠覆沙箱,我有许多测试项目,二进制文件等。我想偶尔修剪历史。

4 个答案:

答案 0 :(得分:28)

以下是官方答复:

在某些特殊情况下,您可能希望销毁文件或提交的所有证据。 (也许有人意外地提交了一份机密文件。)这并不容易,因为Subversion是故意设计的,永远不会丢失信息。修订是不可变的树,彼此建立在一起。从历史记录中删除修订版会导致多米诺骨牌效应,在所有后续版本中造成混乱,并可能使所有工作副本无效。

然而,该项目计划有朝一日实施一个svnadmin obliterate命令,该命令将完成永久删除信息的任务。 (见问题516。)

与此同时,您唯一的办法是svnadmin转储您的存储库,然后通过svndumpfilter(不包括坏路径)将转储文件传输到svnadmin load命令中。有关详细信息,请参阅Subversion书籍的第5章。

在此处找到:http://subversion.tigris.org/faq.html#removal

答案 1 :(得分:5)

乔恩 - 我们不同意。有时候修剪“非常旧”的数据是合适的,我们确定不再需要这些数据,因为它在其他一些媒体上备份。例如,一个自动跟踪配置文件版本的系统。在某些时候,有意义地说 - “我们知道我们不再需要按照一年前的方式进行配置才能上线。以某种离线格式提供这些信息很好,但是留下它生产系统中的在线并不是一件好事。“这是能够轻松归档旧数据,然后从存储库中删除它的适当时机的完美示例。我找到了解决问题的方法,但我认为这是一个真正的黑客,我必须从某个时间点有效地重新播放历史记录,通过所有修订版创建一个新的存储库,以便我可以替换旧的存储库。

答案 2 :(得分:4)

您可以使用svndumpfilter

然而,这不是一个推荐的事情。存储库应该(大多数情况下)仅附加数据库。由于数据库的集中性,可以容忍一定数量的数据突变,但它不应该是常规操作。

你应该为每个项目使用一个单独的存储库,而不是一个你想要不时修剪的包存储库。

答案 3 :(得分:2)

你真的不想修剪历史,那就是疯狂。

您可能希望删除旧分支,以便它们不会出现在您的svn浏览器中,但这与'svn rm'一样简单。修订版仍保留在版本控制系统中。