如何删除最后一个svn修订版?

时间:2013-06-05 16:36:05

标签: svn svnadmin

我想从存储库中删除最后一个修订版(或最后修订版)。

怎么做?

是否可以从project/db/revs/project/db/revprops/删除svn修订文件?

4 个答案:

答案 0 :(得分:3)

检查SVNBook:Repository Maintenance

svnadmin dump <path-to-repository> -r 0:99 > mydump.dump

其中99是你的N-1号码。这样,您可以创建从0到99版本的存储库转储,并可以使用svnadmin load加载到新的新存储库。

答案 1 :(得分:2)

为什么要删除最新修订版?它是否包含可能本质上敏感的数据,任何人都不应该看到它,或者最后一次修改是真正的臭味?

作为pointed out,您可以通过svnadmin进行转储和加载。它会使您的存储库失效并且通常比它的价值更令人痛苦。然而,它确实使得它似乎从未发生过最后一次修订。这是完全修改版本的唯一方法。只有当该修订版中的信息非常专有或可能导致您的公司被起诉时,您可能会做的事情。

更简单的方法是简单地恢复错误的修订版。您可以通过svn merge命令恢复上一个修订版(或任何修订版):

$ svn merge -c -$rev_to_remove .

旧的删除版本的历史记录仍将存在,如果用户足够了解Subversion,则可以访问它。但是,存储库的状态将恢复到最后一次致命修订之前的状态。

答案 2 :(得分:2)

我只是试着按照你在问题中建议的那样做,并且它有效!

首先,您从db/revpropsdb/revs删除最后一个修订版。然后,您还必须减少db/currentdb/txn-current

中的数字

如果任何其他开发者已经签出了最后一个版本,那么他们必须再次签出。检查出旧版本似乎没问题。

没有不可预见的副作用因为我在之前和之后做了一个差异,并且数据库是相同的(在提交和删除最后一次转录之后)。

但我认为很明显,您只能删除链末尾的修订版。从中间删除修订版可以搞砸修订版之间的增量。

你不需要成为svn数据库结构的专家来做这些简单的事情,就像bahrep在评论中所建议的那样

答案 3 :(得分:0)

通常,删除修订版涉及创建存储库的新副本,并删除特定修订版。如果这是一个小的签到,我会说获取以前的版本,将这些文件移到一边,获取最新版本,然后将以前的文件复制到顶部并重新检入。