Svn Subversion存储库错误

Svn Subversion存储库错误,svn,version-control,Svn,Version Control,这个让我抓狂 我正在Ubuntu上运行Subversion 1.3.1(r19032)。直到最近,当我尝试在转储之前运行svnadmin verify时,一切都很好。这是错误消息: svnadmin:无效的差异流:insn 0 无法解码 我四处寻找解释和解决办法,但似乎找不到。Subversion专家,我需要您的帮助。您应该确保您使用的存储库版本是正确的svnadmin。使用错误的版本可能会出现这样的错误 已经说过,版本1.3 .x现在已经相当老了,应该考虑升级到最新的1.5。 我还通过谷歌发现

这个让我抓狂

我正在Ubuntu上运行Subversion 1.3.1(r19032)。直到最近,当我尝试在转储之前运行svnadmin verify时,一切都很好。这是错误消息:

svnadmin:无效的差异流:insn 0 无法解码


我四处寻找解释和解决办法,但似乎找不到。Subversion专家,我需要您的帮助。

您应该确保您使用的存储库版本是正确的
svnadmin
。使用错误的版本可能会出现这样的错误

已经说过,版本1.3 .x现在已经相当老了,应该考虑升级到最新的1.5。


我还通过谷歌发现了可能导致此问题的原因。

不幸的是,我不知道如何解决您的实际问题

关于今后的预防措施: 我同意Greg Hewgill的观点:subversion 1.3.1中有几个已知的数据存储库损坏bug。最后一个已知的版本在1.4.6中进行了修补(当然也在所有1.5.x和所有未来版本中进行了修补)。因此,如果可能的话,您可以升级到Ubuntu 8.04(dapper drake),它附带subversion 1.4.6(以及一些ext3文件系统补丁)。如果升级到dapper drake,请确保使用dapper drake版本的e2fslibs重新格式化ext3分区,并对其执行错误的块检查(在大分区上这可能需要几个小时): e2fsck-c-c-j/dev/

此外,在许多情况下,不是subversion造成存储库损坏,而是底层平台(即大多数情况下的硬件)造成的。Subversion信任底层平台,而不自行进行校验和。这意味着,如果您确实拥有一个有价值的源代码存储库,并且不想不时播放未损坏的存储库备份版本的备份,那么您应该投入一些资金,将存储库放在一个专用的盒子上,该盒子带有ECC内存、Solaris操作系统和位于3向RAID-1 ZFS镜像上的ZFS文件系统(三个驱动器上的冗余zfs softare raid镜像)。zfs在发送到存储控制器之前对每一位进行校验和,而ext3不这样做


硬件位错误确实会在现实生活中一次又一次地发生。Subversion不会检测到这些错误。因此,您必须使用具有校验和以及ECC内存的文件系统的操作系统。

在重命名文件和目录后不久,我在svnadmin 1.5中遇到了同样的错误。具体来说,我从“文件名”重命名了一些文件对“文件名”和SVN假装没问题…后来当我尝试进行新签出时,却吓了一跳。当我尝试进行新签出时,我收到一条奇怪的中止消息,说文件不存在

因此,这自然会导致我执行svnadmin转储,然后执行svnadmin verify,以获得与您指定的相同的消息

我不知道有什么解决办法。我是这样解决这个问题的:

  • 转储存储库的下一个早期版本,并在转储上运行svnadmin verify
  • 如果仍然发生错误,请转到步骤1
  • 在验证了良好的转储之后,我删除了整个SVN存储库,重新创建了它,并从良好的转储文件导入
  • 确保您的转储文件包含所有增量,以便获得到最后一个良好点的更改历史记录


    我丢失了一点代码,但不会太多,不会让人感到真正的痛苦。

    这是SVN开发人员希望听到的-SVN应该不区分大小写,让Windows用户感到烦恼:)