SVN 存储库不断损坏

Posted

技术标签:

【中文标题】SVN 存储库不断损坏【英文标题】:SVN repository keeps getting corrupted 【发布时间】:2019-10-15 16:28:33 【问题描述】:

我一周前刚刚开始体验这种情况,我尝试了很多方法,但它一直在发生。它以失败的提交错误消息开始:

无法在文件“(修订路径)”中设置位置指针:尝试是 将文件指针移到文件开头之前。

在第一次获得它时,我发现一些资源表明最新版本中存在某种损坏。我研究了如何删除修订,然后我按照this process 创建了一个新的回购并将非损坏的修订转储到其中。这是成功的,但需要一遍又一遍地重复这是一个相当繁重的过程。

第二次发生时,我找到this resource,它解释了如何直接在 repo 文件夹结构中删除损坏的修订并将当前修订设置回之前的修订。这比上述方法有效并且速度更快,但我仍然不想重复。

然后今天又发生了。

每次我都使用svnadmin verify 并得到了这个(显然每次都有不同的修订号):

svnadmin 验证(repo 路径) * 验证版本 0 的元数据 ... * 验证存储库元数据时出错。 svnadmin: E160058: l2p index entry PHYS -1does not match p2l index value LOG r391:i10 for PHYS 1407

我用谷歌搜索了那个错误,但实际上什么都不存在,那个错误代码或那个神秘消息中的其他垃圾没有任何结果。

请帮我弄清楚如何阻止这种情况发生。

编辑:在成功提交了大约 8 次修订后,这次我遇到了一个新错误:

第 398 版中的项目索引 69 太大

svnadmin 验证报告:

索引文件(repo 路径)/db/revs/0/396 在偏移量 0x43c8 处意外结束。

这是该偏移量的内容。似乎一切都没有结束:

Research 也表示损坏。到底发生了什么?

【问题讨论】:

为了将来参考,您是否有多个用户同时通过file:// 协议访问存储库,或者这是一个单用户存储库? 【参考方案1】:
    没有“TortoiseSVN 存储库”之类的东西。您有一个 Subversion 存储库,并且很可能是您错误地访问它导致损坏。 您很可能将存储库存储在网络共享上并通过 file:// 协议访问它。如果是您的情况,请阅读https://tortoisesvn.net/faq.html#reponoserver。

【讨论】:

太好了,谢谢你的回答。从那以后,我为自己发现了这一切,现在我将我的存储库托管在一个真正的 SVN 服务器上。对此有官方答案很好,因此其他人也可以得到帮助。 @rory.ap 如果您将存储库存储在网络共享上,请在您的问题中提及这一点。我希望我的回答也能帮助其他人解决此类问题。顺便说一句,您是否考虑过使用 VisualSVN 服务器?

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

批量验证 svn 存储库

SVN repo损坏了

如何将 SVN 存储库迁移到另一个 SVN 存储库?

git-svn 多个 git 存储库到同一个 svn 存储库

如何将本地 svn 存储库迁移到谷歌代码的 svn 存储库?

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