我想从存储库中删除最后一个修订版(或最后修订版)。
怎么做?
是否可以从project/db/revs/
和project/db/revprops/
删除svn修订文件?
答案 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/revprops
和db/revs
删除最后一个修订版。然后,您还必须减少db/current
和db/txn-current
如果任何其他开发者已经签出了最后一个版本,那么他们必须再次签出。检查出旧版本似乎没问题。
没有不可预见的副作用因为我在之前和之后做了一个差异,并且数据库是相同的(在提交和删除最后一次转录之后)。
但我认为很明显,您只能删除链末尾的修订版。从中间删除修订版可以搞砸修订版之间的增量。
你不需要成为svn数据库结构的专家来做这些简单的事情,就像bahrep在评论中所建议的那样
答案 3 :(得分:0)
通常,删除修订版涉及创建存储库的新副本,并删除特定修订版。如果这是一个小的签到,我会说获取以前的版本,将这些文件移到一边,获取最新版本,然后将以前的文件复制到顶部并重新检入。