删除 SVN 服务器中的版本不会更新日志

Deleting versions in SVN server doesn't update the log

我需要删除一些已签入我的 SVN 的错误版本,因此我按照我从此处的另一个 Whosebug 问题中获得的说明进行操作: https://superuser.com/questions/95432/want-to-delete-revisions-from-my-svn-repository

 svnadmin create newrepo
 svnadmin dump -r 0:1231 repo | svnadmin load newrepo
 mv repo oldrepo
 mv newrepo repo

起初它似乎工作得很好,但后来我注意到当我们再次开始签入文件时它做了一些非常奇怪的事情。它忽略了我们的提交评论,而是使用该修订版原始签入中的先前评论。事实上,日期是该修订的原始日期,而不是当前签入的日期,并且列出的文件都是第一次签入的原始文件。当我们执行 Compare To Previous Revision 时,它会显示一条消息没有发现任何更改,它确实保存了我们的实际更改。

所以在我看来,SVN 用来跟踪没有被我的转储和 mv 清除的提交的某个地方有一个日志文件或某种目录文件。任何人都知道我可以去哪里清理这个文件,以便这次我可以记录正确的提交信息?

好的!所以我在偶然发现这个 Whosebug 之后弄清楚了问题所在:

Roll back or revert entire svn repository to an older revision

其中一个回复谈到path/db/current。 fuenfundachtzig 的整个回复说,

If you have access to the SVN server, you can just edit path/db/current, put the old revision number you want to revert to (here: 24) there, and remove no longer needed revision files (i.e. 25, 26, 27, 28) from path/db/revs/0/. At least this worked for me today, after I had accidentally removed a directory in the repository.

这让我了解了存储库文件夹中的某些文件的含义。浏览了一下,我发现我的修订号和实际修订都是正确的。我探索了 path/db/revprops 并发现我真正的提交日志被保存了。所以一切看起来都是正确的,这让我想到可能有某种日志缓存或者它的乌龟 svn 端从中提取的东西。这让我看到了这篇文章:

http://tortoisesvn.net/logcacheuuids.html

这让我意识到 oldrepo 和 newrepo 上的 uuid 是相同的。我按照上面文章的说明新建了一个uuid,问题解决了!

希望这对其他人有帮助。我不确定错误是否是我在最初转储或加载 oldrepo 时遗漏了一些标志,关于为什么我的 uuid 是相同的,或者这是否只是我没有意识到我必须这样做的一个步骤做更新我的 uuid,但是一旦完成,一切都变得很笨拙。