VisualSVN删除错误提交后的损坏表示

时间:2014-06-22 15:20:27

标签: svn visualsvn-server svnadmin svndump

关注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. 启动visual svn服务器。
  9. 警告:要求所有用户删除使用$BAD_REV的结帐 并使用($BAD_REV减1)重新检查。


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

      

    错误提交失败(详情如下):
    错误已损坏   表示' 199 10142 111 1475(null)
    错误d18718662872fab9aa981c20a47921768f567189(null)

    不确定如何解决此问题,我不想创建新的存储库。

3 个答案:

答案 0 :(得分:1)

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

您是否阅读过the thread you refer in the questionSimon explicitly discourages使用Ali指定的程序

  

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

     

通常,您只需在工作副本中还原不必要的更改即可   提交正确的修订。如果你真的需要删除最后修订版   从存储库中按照以下步骤操作:

     
      
  1. 备份存储库。

  2.   
  3. 转储除最后一个之外的所有修订。假设最后一次修订是10:

         

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

  4.   
  5. 创建新存储库。

  6.   
  7. 将转储装载到新存储库:

         

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

  8.   

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

我所做的是删除我创建的新仓库,并在不强制 UUID 的情况下再次导入。

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

设置UUID