我想知道乌龟svn保留修订历史的时间有多长。假设我有一个文件,我在一年前通过repo浏览器从存储库中删除了,我能否仍然恢复该文件?
如果我能够恢复,我还想知道永久删除该早期文件副本和相关修订历史记录的方法,以便将来无人能够访问该文件。可能吗?我在组织中遇到了问题,因为我经常更新和删除假设文件被永久删除。存储库的文件系统现在已经膨胀。请建议如何解决它。
答案 0 :(得分:3)
Tortise SVN实际上只是一种访问Subversion存储库的简单方法。引用Subversion常见问题解答,了解如何永久删除文件:
您有特殊情况 可能想破坏所有的证据 文件或提交。 (也许有人 不小心承诺保密 文件。)这不是那么容易,因为 颠覆是故意设计的 从不丢失信息。修改是 不可改变的树,建立在一个 另一个。从中删除修订 历史将导致多米诺骨牌效应, 在随后的所有时间里制造混乱 修改和可能无效 所有工作副本。
然而,该项目有计划 总有一天实现 svnadmin 将删除命令 完成永久的任务 删除信息。 (看到 issue 516。)与此同时,你唯一的办法就是 然后, svnadmin dump 您的存储库 管道转储文件 svndumpfilter (不包括坏路径) 进入 svnadmin load 命令。看到 chapter 5 [编辑:更改链接] Subversion的书籍 有关这方面的详细信息。
基本上,您将整个存储库打包到一个文件中,运行命令以从该包中删除对给定路径的所有引用,然后将该包转换为一个新的,不同的存储库。将旧版本换成服务器上的新版本,你就可以了。
除非提及,否则您客户的所有工作副本可能会失效。这确实需要能够访问服务器。您正在运行自己的SVN服务器,对吗?
答案 1 :(得分:1)
http://svn.haxx.se/users/archive-2005-05/1040.shtml
在某些特殊情况下,您可能希望销毁文件或提交的所有证据。 (也许有人意外地提交了一份机密文件。)这并不容易,因为Subversion是故意设计的,永远不会丢失信息。修订是不可变的树,彼此建立在一起。从历史记录中删除修订版会导致多米诺骨牌效应,在所有后续修订版中产生混乱,并可能使所有工作副本无效。 然而,该项目计划有一天实施一个svnadmin obliterate命令,该命令将完成永久删除信息的任务。 (见问题516.) 与此同时,您唯一的办法是svnadmin转储您的存储库,然后通过svndumpfilter(不包括坏路径)将转储文件传输到svnadmin load命令中。有关详细信息,请参阅Subversion书籍的第5章。