SVN“格式错误的文件”损坏的存储库

时间:2010-12-10 10:02:23

标签: svn version-control corruption

我今天遇到了腐败的存储库问题。

svn log给了我“格式错误的文件”错误,即使svnadmin验证说一切正常。

当您的源历史记录消失时,这总是很糟糕,所以我也会发布一个答案,以防它帮助某人。

2 个答案:

答案 0 :(得分:3)

备份您的存储库!

  • 运行“svnadmin dump REPOSPATH> nul”

注意它能够转储的最新修订版(例如99),下一个版本有错误(例如100)。

  • 从REPOSPATH \ db \ revprops打开错误的修订道具。

如果它包含垃圾或NUL,你可以解决它:

  • 将之前的道具(99)复制到坏道(100)
  • 打开已更正的道具,将日期设置为合理的值(除非您知道文件格式,否则不要编辑任何其他内容)

再次运行“svnadmin dump REPOSPATH> nul” - 它应该没有错误地完成

答案 1 :(得分:0)

@laktak的解决方案在大多数情况下都会在道具损坏的情况下工作,而在@ jgifford25指出的实际转速文件时则无效。

一个理想的解决方案是:

  1. 按照建议的@laktak标识损坏的更改,比如说100
  2. 从一开始就将转储保留到仅最后一个有效版本作为备份,如果您有备份直至有效修订版,则跳过此步骤。
    svnadmin dump /path/to/currentrepo -r 0:99 --incremental > svnbackuptillvalid
  1. 对版本100之后提交的版本进行第二次备份,直到备份为止(仅在存在备份时,如果确定损坏后没有提交,请跳过此步骤)。
   svnadmin dump /path/to/currentrepo -r 101:HEAD --incremental > svnbackupafterinvalid
  1. 现在创建一个新的存储库
    svnadmin create /path/to/newrepo
  1. 将有效的修订备份恢复到新的仓库
    svnadmin load /path/to/newrepo < svnbackuptillvalid

与团队共享新的Repo URL,或删除现有的repo并使用相同的路径。

此外,您可以添加无效修​​订后提交的有效变更集。

    svnadmin load /path/to/newrepo < svnbackupafterinvalid