我需要删除已签入SVN的一些不良版本,所以我按照我从另一个StackOverflow问题得到的说明: 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
起初它看起来效果很好,但后来我注意到,当我们再次开始检查文件时,它正在做一些非常奇怪的事情。它忽略了我们的提交注释,而是使用了该修订版中原始签入的先前注释。实际上,日期是该修订的原始日期,而不是当前的签入日期,列出的文件是第一次签入时的所有原始文件。当我们执行“比较上一版本”时,它会显示一条消息:没有找到任何更改,它确实保存了我们的实际更改。
所以我看起来是有一个日志文件或某种目录文件,SVN使用它来跟踪我的dump和mv没有清除的提交。有人知道我可以去哪里清理这个文件,以便我这次可以记录正确的提交信息吗?
答案 0 :(得分:0)
确定!所以我弄清楚这个StackOverflow遇到了什么问题:
Roll back or revert entire svn repository to an older revision
其中一个回复谈到了路径/ db / current。 fuenfundachtzig的整个回复说,
如果您有权访问SVN服务器,您只需编辑路径/数据库/当前,将要恢复的旧版本号(此处为24)放在那里,并删除不再需要的修订文件(即25,来自path / db / revs / 0 /的26,27,28)。在我不小心删除了存储库中的目录之后,至少这对我有用。
这让我了解了存储库文件夹中的某些文件的含义。浏览,我意识到我的修订号和实际修订都是正确的。我探索了path / db / revprops并发现我的真实提交日志已被保存。所以一切看起来都是正确的,这让我觉得可能有某种日志缓存或乌龟svn方面的东西。这让我想到了这篇文章:
http://tortoisesvn.net/logcacheuuids.html
让我意识到oldrepo和newrepo上的uuids是相同的。我根据上面文章的指示创建了一个新的uuid,问题解决了!
希望这有助于其他人。我不确定错误是我错过了一些旗帜,当我完成我的初始转储或装载oldrepo时为什么我的uuid是相同的,或者它只是我没有做的一步意识到我必须做更新我的uuid,但一旦完成,一切都很笨拙。