gpt4 book ai didi

svn recovery - 恢复个别修订

转载 作者:行者123 更新时间:2023-12-04 14:33:13 26 4
gpt4 key购买 nike

不管我是如何到达这里的,我都可以从备份中恢复 SVN 存储库。不幸的是,备份略有损坏,在超过 19000 次修订中,大约有 80 次丢失。备份是一个 bzip2 文件,我能够使用 bzip2recover 恢复大约 99% 的块。这些是“已知良好”的,因为它们已成功解压。

因此,我能够创建一个已知良好提交和丢失提交的列表。

原始存储库也已损坏,但许多文件幸免于难。不幸的是,整个存储库已损坏。

因此,我很幸运能够从原始 db/revs 和 db/revprops 目录中获得这些缺失修订版的文件。很有可能是备份 bz2 文件的损坏与 db/revs 文件的损坏不一致。

我已经重建了 r13892 之前的所有内容,但我知道 r13893 已损坏,所以我没有 r13893 的转储。我确实有来自原始存储库的文件 db/revs/13893 和 db/revprops/13893。

我使用 svn-1.4 创建并重建了存储库,但我升级到 svn-1.6 以便我可以使用选择性 svnadmin verify 命令(在单个或一系列提交上)。

我想也许我可以将这两个文件放入新的存储库中,更新 db/current [1] 然后继续。但是,当我尝试验证时,出现此错误:

$ 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

所以这显然不起作用。不确定 13214 与这里的任何事情有什么关系。

我降级回 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 到 13892 是 100% 正确的(除非 bz2 块解压缩错误但通过了校验和)。
  • 我不知道原始 SVN 存储库中的 r13893 文件是否正常 - 它们可能已损坏,但损坏量很小,不太可能(但可能)。

  • 有没有人知道我如何能够填补这个漏洞?请注意,我拥有 100% 的信心 r13894,所以如果我可以插入 r13893,我可以继续进行其余的恢复。

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

    我在其他一些 SVN 存储库上对此进行了测试(在禁用写入 db/current 之后!)以验证它产生的值与已有的值相同。确实如此。

    最佳答案

    关于这一点:

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

    我怀疑 rev 13893 引用了 rev 13214 中的某些内容(例如文件副本、skip-rev 内容或其他内容)。

    在做 svn 加载时,新修订版是否与原始修订版匹配?我记得遇到过这样的情况,我的转储引用了一个 rev 0,它被加载为一个 rev 1。如果这里发生了类似的事情,对 rev 13214 的反向引用将被关闭一个。

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

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

    关于svn recovery - 恢复个别修订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1297584/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com