2

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

怎么做?

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

4

4 回答 4

3

检查 SVNBook:存储库维护

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

其中 99 是您的 N-1 号码。这样,您可以创建从 0 到 99 修订版的存储库转储,并且可以使用svnadmin load.

于 2013-06-05T16:59:55.717 回答
3

我只是尝试完全按照您在问题中的建议进行操作,并且成功了!

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

如果任何其他开发人员已经签出了最新版本,那么他们必须重新签出。签出旧版本似乎没问题。

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

但我认为很明显,您只能在链的末尾删除修订。从中间删除修订可能会破坏修订之间的增量。

您不需要成为 svn 数据库结构方面的专家来做这些简单的事情,正如评论中建议的 bahrep

于 2017-10-04T08:28:33.127 回答
2

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

正如所指出的,您可以通过svnadmin. 它会使您的存储库崩溃,并且通常比它的价值更痛苦。然而,它确实使最后一次修订似乎从未发生过。这是完全消除修订的唯一方法。仅当该修订中的信息是非常专有的或可能使您的公司被起诉时,您才可能会这样做。

一种更简单的方法是简单地恢复那个糟糕的修订。svn merge您可以通过以下命令还原上一个修订版(或任何修订版) :

$ svn merge -c -$rev_to_remove .

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

于 2013-06-05T18:15:38.450 回答
0

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

于 2013-06-05T16:47:20.333 回答