Subversion存储库错误

时间:2008-10-28 23:54:35

标签: svn version-control

这个让我挠头。

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

  

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

我已经四处寻找解释并修复,但似乎找不到一个。颠覆专家,我需要你的帮助。

3 个答案:

答案 0 :(得分:3)

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

话虽如此,版本1.3.x现在已经很老了,你应该考虑升级到最新的1.5.x。

我还通过谷歌发现some versions of SVNKit会导致此问题。

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

重命名文件和目录后,我在svnadmin 1.5上遇到了同样的错误。具体来说,我将一些文件从“文件名”重命名为“文件名”,SVN假装它没关系......只是在我尝试进行新的结账时才吓坏了。当我尝试新的结账时,我收到了一条关于不存在的文件的奇怪中止消息。

因此,这自然导致我执行svnadmin转储,然后svnadmin验证仅获取您指定的相同消息。

我不知道修复。我这样解决了这个问题:

  1. 转储下一个先前版本的存储库并在转储上运行svnadmin verify。
  2. 如果仍然发生错误,请转到第1步。
  3. 在验证好的转储后,我删除了整个SVN存储库,重新创建了它,并从良好的转储文件中导入。
  4. 确保您的转储文件包含所有增量,以便将更改历史记录提升到最后一个优点。

    我丢失了一些代码,但并没有太多太痛苦。