【问题标题】:Deleting versions in SVN server doesn't update the log在 SVN 服务器中删除版本不会更新日志
【发布时间】:2015-07-19 18:43:36
【问题描述】:

我需要删除一些签入到我的 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

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

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

【问题讨论】:

    标签: svn version-control tortoisesvn commit visualsvn-server


    【解决方案1】:

    好的!所以我在偶然发现这个 StackOverflow 之后发现了问题所在:

    Roll back or revert entire svn repository to an older revision

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

    如果你可以访问 SVN 服务器,你可以编辑 path/db/current,把你想要恢复到的旧版本号(这里:24)放在那里,然后删除不再需要的版本文件(即 25, 26、27、28) 来自路径/db/revs/0/。至少今天这对我有用,因为我不小心删除了存储库中的一个目录。

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

    http://tortoisesvn.net/logcacheuuids.html

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-13
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多