SVN 版本损坏

Posted

技术标签:

【中文标题】SVN 版本损坏【英文标题】:SVN revision corrupted 【发布时间】:2015-03-10 16:28:41 【问题描述】:

我的 SVN 版本 22026 已损坏。我已经使用 svnadmin verify 命令进行了验证。我手动验证了 db\revprops 和 \db\revs 文件夹中的 22026 文件。 22026 文件在 revprops 文件夹中为空,但内容在 revs 文件夹中可用。看起来修订版 22026 属性文件已损坏或为空。

我使用了 RSYNC 备份,所以我的备份也有同样的问题。如何纠正这个问题。

【问题讨论】:

【参考方案1】:

你可以尝试两件事:

转储你的 repo 并再次加载它,忽略属性:

svnadmin dump REPOS_PATH > full.dump
svnadmin load --bypass-prop-validation NEW_REPOS_PATH < full.dump

如果上述方法不起作用,请排除有问题的修订,如SO answer 中所述:

$ svnadmin dump -r1:22025 my_repos > dumpfile.dump
$ svnadmin dump --incremental -r22027:HEAD my_repos >> dumpfile.dump
$ svnadmin load my_repos_new < dumpfile.dump

由于您写了 “内容在 revs 文件夹中可用”,一旦恢复您的存储库,您也许可以手动应用此修订。

【讨论】:

我认为第一个选项是不可能的,因为在导出整个 repo 时我收到错误@22026。所以我会尝试选项 2。在选项 2 方法中,我们跳过一个修订版,所以最后一个修订版计数将被减少。例如,我的最后一个修订版是 170973 跳过修订版后,我的最后一个修订版号将是 170972。它会影响整个回购吗? 是的。但是您可以将 dump 分隔为 2 个文件,首先加载,提交一个虚拟修订,然后加载第二个 dump 文件。这样,rev 编号将与旧仓库中的一样。

以上是关于SVN 版本损坏的主要内容,如果未能解决你的问题,请参考以下文章

SVN E155016 ... 的工作副本数据库已损坏

SVN repo损坏了

修复损坏的 SVN 存储库

围绕变量“...”的堆栈已损坏

SVN 转储/重新加载具有历史记录的特定版本

重新创建SVN wc.db.