2

在关注https://groups.google.com/forum/#!topic/visualsvn/2LpBN8qtEfM


以下过程描述了如何在极端情况下“撤消”对 svn 存储库(fsfs 后端)的最后一次提交:(在实际应用之前,请在您的环境中的“测试”存储库中对其进行彻底测试)假设错误的修订号是$BAD_REV

  1. 停止可视 svn 服务器。
  2. 备份您的所有存储库(以防止不幸的情况发生,如果发生)
  3. 转到“存储库”文件夹。
  4. 选择您需要在其中“撤消”最后一次提交的特定存储库。
  5. 编辑 db/current 并减少第一个数字。那是 HEAD rev。
  6. 删除db/rev/$BAD_REV
  7. 删除db/revprops/$BAD_REV
  8. 启动可视 svn 服务器。

注意:要求所有用户删除使用的结帐$BAD_REV 并重新使用($BAD_REV减1)结帐。


在此过程之后的第二次提交后,我收到以下错误:

错误提交失败(详细信息如下):
错误损坏表示'199 10142 111 1475(空)
错误d18718662872fab9aa981c20a47921768f567189(空)

不知道如何解决这个问题,我不想创建一个新的存储库。

4

3 回答 3

1

您通过手动编辑它的内部来破坏存储库。事实上,阿里的程序是有害的。除非您真的知道自己在做什么,否则您不得触摸存储库内部。我希望你有这个 repo 的备份。

您是否阅读了您在问题中提到的主题Simon 明确反对使用 Ali 指定的程序。

我们不建议使用该过程来删除最新版本。Subversion 存储库结构比看起来更复杂。

通常,您可以只恢复工作副本中不必要的更改并提交正确的修订。如果您确实需要从存储库中删除最后一个修订版,请按照以下步骤操作:

  1. 备份存储库。

  2. 转储除最后一个以外的所有修订。假设最后一个版本是 10:

    svnadmin.exe dump -r1:9 <repository path> > repo.dump.

  3. 创建新的存储库。

  4. 将转储加载到新存储库:

    svnadmin.exe load <new repository path> < repo.dump.

如果您没有备份,那么修复存储库的唯一可能解决方案是执行以下步骤:

  1. 备份存储库
  2. svnadmin verify使用工具检查存储库,
  3. 启动 Windows 资源管理器并导航到<path-to-repository>\db\目录,
  4. 从目录中删除rep-cache.db文件并尝试再次通过 Subversion 客户端访问它(例如尝试提交对 repo 的任何更改)。除非存储库完全损坏,否则它可能会有所帮助。

    尽管如此,我强烈建议恢复存储库的备份并遵循涉及使用svnadmin dumpsvnadmin load工具的正确过程。

于 2014-06-23T11:56:38.457 回答
0

似乎删除存储库文件夹中的rep-cache.db文件起到了作用。
“表示”让我相信它被缓存在某个地方。

希望这个修复能持续下去,我希望我能够帮助遇到类似情况的其他人。

于 2014-06-23T17:33:25.287 回答
0

通过 svnadmin 工具将 svn 存储库从一台服务器移动到另一台服务器时,我遇到了完全相同的问题。

我所做的是删除我创建的新仓库,然后再次导入它而不强制使用UUID

您可以稍后通过svnadmin setuuid [some id]设置 UUID

于 2017-07-03T12:56:00.230 回答