SVN-更新时校验和不匹配


122

当我尝试从Subversion更新某些文件时,出现错误:

org.tigris.subversion.javahl.ClientException: 
Checksum mismatch while updating 'D:\WWW\Project\\.svn\text-base\import.php.svn-base'; expected: '3f9fd4dd7d1a0304d8020f73300a3e07', actual: 'cd669dce5300d7035eccb543461a961e'

为什么我得到这个?我该如何解决?

Answers:


70

修复它的最简单方法(如果更改不多)是将更改复制到另一个目录,删除检出项目的目录,然后再次检出项目。

然后将您的更改复制回(不复制任何.svn文件夹)并提交,然后继续。


9
我只是删除了存在问题文件的文件夹,然后更新了整个项目。现在看来还可以。
Koralek M. 2012年

+1我发现的另一种选择让我更轻松地入侵svn数据库
SeanDowney 2012年

@SeanDowney怎么做?
arvindwill

@arvindwill对不起,我的评论并不十分清楚,这种方法要容易得多。这是一个可怕的选择:maymay.net/blog/2008/06/17/…–
SeanDowney

2
这根本不是一个特定的修复程序。您始终可以删除所有本地数据,并从存储库中以全新副本开始。
蒂姆

197

如果您使用的是SVN 1.7+,则此处介绍一种解决方法。

总结一下:

  1. 转到包含问题文件的文件夹
  2. 执行命令svn update --set-depth empty(注意:这将删除您的文件,因此请先进行复制!)
  3. 执行命令 svn update --set-depth infinity

17
虽然这对我有用,但请注意“ svn update --set-depth empty”将删除该路径中的所有内容,因此请首先进行复制
tristanbailey 2013年

3
这对于在远程位置修复大型存储库非常有用。进行新的结帐虽然可以,但是却需要一个多小时。这花了几分钟。
布莱恩·吉莱斯皮

嗨,我已经使用window和tortoisesvn作为svn客户端..我尝试了您的解决方案。但是它仍然显示了isse
Amit Bera

只是将.svn目录从新存储库替换为旧目录,它起作用了:)
harishkumar329

这对我来说很棒,谢谢!值得注意的是,第一点是深入到导致问题的实际文件夹(或文件)。然后,您不必进行太多更新。我有一个包含几十个文件的文件夹,我在文件夹上使用了Tortoise“更新至->仅此项目”,然后使用“更新至->完全递归”将其全部恢复。仍然每个人都当心,这将删除该文件夹中的文件!在一条慢速的VPN链接上,该链接具有数千兆字节的存储库,并且在整个过程中都进行了精确的设置深度设置,因此“标准”解决方案根本就没有用。
dash-tom-bang

6

我有一个类似的问题。主要提供商是杀毒软件“ FortiClient”(杀毒软件+ VPN CLient)。当我禁用它时-所有更新/签出操作均正确进行


1
这是解决我的问题的唯一答案。我从来没有想过这一点。谢谢!
timeon

5

我找到了解决此问题的简便方法。您不能直接从Eclipse执行此操作。脚步:

  1. 导航到Windows中的工作区文件夹结构
  2. 重命名文件夹
  3. 日食刷新
  4. 现在,该文件夹和文件将在Eclipse中从项目中删除,并出现在新的重命名文件夹下
  5. 现在尝试“与存储库同步”选项。

这将还原.svnfolder中的文本基本文件夹。更新错误时校验和不匹配将不会再出现。


1

这是使用Eclipse插件和同步发生的。引起问题的文件没有本地更改(实际上,自上次更新以来,没有远程更改)。我为文件选择了“还原”,对文件没有其他修改,一切恢复正常。


1

我有一个相同的错误,但是只有一个文件。在IntelliJ IDEA中,我可以复制文件,然后进入项目并删除有问题的文件,然后成功提交。然后,我用相同的名称制作了一个新文件,并将内容复制回该文件。我想您会丢失修订历史记录,但它确实起作用。


1

如果您有同事与您合作:

1)请他重命名导致问题的文件,然后 commit

2)您update(现在您看到带有不同名称的无效校验和的文件)

3)将其重命名为其原始名称

4)commit(并要求您的同事update取回其初始状态的文件名)

这为我解决了问题。



1

我正在使用Tortoise SVN,但在尝试了此页中的所有解决方案后却无法正常工作,

我终于备份了问题文件。并使用Repo Browser删除其中的问题文件,然后更新本地文件夹,以便删除本地文件夹中的文件。然后复制回备份文件和Add > Commit,然后我就可以成功更新。

此方法的唯一缺点是将删除此文件的历史记录。


0

要解决此问题,请执行以下步骤:

  1. 打开出现错误的.svn目录中的项目文件。
  2. 查找出现错误的文件的条目,然后将期望值替换为错误的实际值。
  3. 现在同步并尝试更新。

如果仍然无法正常工作。试试这些。它只是一种解决方法:

  1. 从系统中删除文件。
  2. 从条目文件中删除文件的条目。(从文件名开始,到特殊字符为止)。
  3. 现在同步并更新文件。

这将从存储库中获取文件的最新版本,所有冲突都将得到解决。


0

服务器上有类似的问题,但是SVN目录很大,不想删除并重新同步,因此我只是在本地制作了一个文件副本,然后将其删除。更新成功并重新添加文件时。


0

尝试删除文件并从.svn目录下的文件条目中删除文件引用


0

我有一个类似的错误,并修复如下:

(我的“修正”基于一个可能正确或不正确的假设,因为我对Subversion在内部的工作方式不甚了解,但它肯定对我有用)

我假设.svn \ text-base \ import.php.svn-base预期与最新提交匹配。

当我检查文件时出错时,基本文件与存储库中的最新提交不匹配。

我复制了最新提交中的文本,并将其保存在.svn文件夹中,替换了不正确的文件(在我的假设不正确的情况下,请进行备份)。(文件被标记为只读,我清除了该标志,改写并将其设置回只读)

这样我就可以成功提交了。


0

我的解决方案是:

  1. 从文件系统执行svn清理
  2. 切换到另一个分支
  3. 解决冲突
  4. 切换到“问题”分支
  5. 从Spring Tool Suite执行清理
  6. 执行项目更新

0

1.“更新为还原”检查目录下的“仅此项目” 2.再次检查“完全递归”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.