通过添加空修订代替丢失的修订来恢复 SVN 存储库数据

问题描述

很少有 SVN 修订版被删除,我们无法从 SVN 存储库中检出完整数据。

我们在 Windows 服务器上使用的是 Visual svn 3.4.6 版本,SVN 数据大小为 900+ GB,并且它有近 90000+ 次修订。

如何找出丢失的修订号并将其替换为空修订以恢复数据。

支持解决问题,我们也准备提供付费服务

邮件 id-jinil.raman@excelindia.com Mob-7907186802

解决方法

基本上,如果您没有备份,那您就不走运了:(SVN 不提供任何工具来修复损坏的修订文件。此外,没有 SVN 版本 3.4.6,但我假设您指的是VisualSVN 服务器版本。对于你的问题,我担心它并不重要。

根据损坏情况,您可能可以挽救里面的大部分数据,但这是一项漫长而乏味的工作:

  1. 找出损坏的修订版
  2. 尝试在损坏的修订之前或之后签出子文件夹

识别损坏的修订

你应该使用

svnadmin verify <filepath_to_repo>

检查哪些修订被破坏。 svnadmin 将在第一个修订版(从 rev. 0 开始)时中断,该修订版已损坏。然后你需要继续

svnadmin verify --revision <broken_rev +1>  <filepath_to_repo>

尝试在损坏的修订之前签出子文件夹

在收集了所有错误修订之后,尝试检查这些损坏修订之前和之间的修订。您可能需要限制到子文件夹才不会遇到任何错误。你应该使用

svn export <url_to_repo>

因为它比创建工作副本更快(无论如何您都无法提交到存储库)