代码之家  ›  专栏  ›  技术社区  ›  davidA

svn恢复-恢复单个修订

  •  4
  • davidA  · 技术社区  · 17 年前

    原始存储库也已损坏,但许多文件幸存下来。不幸的是,整个存储库已经损坏。

    $ svnadmin verify new-svn
    * Verified revision 1.
    ...
    * Verified revision 13889.
    * Verified revision 13890.
    * Verified revision 13891.
    * Verified revision 13892.
    svnadmin: Can't read file 'svn/db/revs/13214': End of file found
    

    我降级回svn-1.4.6,以防1.6版本出现任何异常。不幸的是,我得到了同样的结果——13893版没有验证:

    ...
    * Verified revision 13891.
    * Verified revision 13892. svnadmin: Can't read file 'svn/db/revs/13214':
    End of file found
    

    [1] 我用这个脚本更新了db/current: http://svn.haxx.se/users/archive-2005-12/att-0630/make-current-fix.py

    我在其他一些SVN存储库上测试了这一点(在禁用db/current!的写入后),以验证它是否产生了与现有值相同的值。确实如此。

    1 回复  |  直到 17 年前
        1
  •  2
  •   retracile    17 年前

    关于这一点:

    svnadmin: Can't read file 'svn/db/revs/13214': End of file found
    

    我怀疑13893版本引用了13214版本中的某些内容(例如文件副本、跳过版本的内容等)。

    在执行svn加载时,新版本是否与原始版本匹配?我记得我遇到过一个案例,我的转储引用了版本0,它被加载为版本1。如果这里发生了这样的事情,那么对13214版的引用将减少一个。

    您可以尝试使用repo数据库中的文件以转储格式创建缺少的rev。不幸的是,我不知道有什么工具可以做到这一点。但我建议你看看 SvnDumpTool ;它能够以许多有用的方式操纵svn转储。

    披露:我过去曾为svndumpool做出过贡献