126

当我尝试从 Subversion 更新一些文件时,我收到错误消息:

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

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

4

16 回答 16

212

如果您使用的是 SVN 1.7+,这里有一个解决方法

回顾一下:

  1. 转到包含导致问题的文件的文件夹
  2. 执行命令svn update --set-depth empty(注意:这会删除你的文件,所以先复制一份!)
  3. 执行命令svn update --set-depth infinity
于 2012-07-06T14:43:55.307 回答
69

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

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

于 2012-04-27T15:05:31.247 回答
7

我有一个类似的问题。主要提供商是防病毒软件“FortiClient”(防病毒软件 + VPN 客户端)。当我禁用它时 - 所有更新/结帐都正确进行

于 2016-01-19T10:20:47.017 回答
6

我找到了一种更简单的方法来解决这个问题。您不能直接从 Eclipse 中执行此操作。脚步:

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

这将恢复 .svnfolder 中的文本基础文件夹。更新错误时校验和不匹配不会进一步出现。

于 2013-10-07T13:17:32.697 回答
1

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

于 2013-12-16T19:30:59.673 回答
1

我有一个同样的错误,但只有一个文件。在 IntelliJ IDEA 中,我能够制作文件的副本,然后进入项目并删除有问题的文件,然后成功提交。然后,我创建了一个具有相同名称的新文件并将内容复制回其中。我猜你会丢失修订历史,但它确实有效。

于 2013-12-30T18:42:05.617 回答
1

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

(我的“修复”是基于一个可能正确也可能不正确的假设,因为我不太了解 subversion 如何在内部工作,但它肯定对我有用)

我假设 .svn\text-base\import.php.svn-base 预计会匹配最新的提交。

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

我从最新提交中复制了文本并将其保存在 .svn 文件夹中,替换了不正确的文件(制作了备份副本以防我的假设错误)。(文件被标记为只读,我清除了该标志,覆盖并将其设置回只读)

然后我能够成功提交。

于 2016-03-03T21:34:32.610 回答
1

如果您有同事与您一起工作:

1) 要求他重命名导致问题的文件并commit

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

3) 将其重命名为原来的名称

4)commit(并要求您的同事update将文件名恢复为初始状态)

这为我解决了这个问题。

于 2016-07-21T12:18:26.193 回答
1

我找到了非常好的解决方案,解决了我的问题。诀窍是编辑 svn DB (wc.db)。

该页面描述了解决方案:http ://www.exchangeconcept.com/2015/01/svn-e155037-previous-operation-has-not-finished-run-cleanup-if-it-was-interrupted/

如果链接已关闭,请查看并按照以下说明进行操作: 在此处输入图像描述

我使用了来自http://sqlitebrowser.org/的sqlite 工具。

于 2017-05-25T13:32:10.713 回答
1

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

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

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

于 2019-07-29T07:42:49.703 回答
0

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

  1. 打开位于出现错误的 .svn 目录中的条目文件。
  2. 找到给出错误的文件的条目,并将预期值替换为错误的实际值。
  3. 现在同步并尝试更新。

如果还是不行。试试这些。它只是一种解决方法:

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

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

于 2014-06-01T11:39:36.953 回答
0

在服务器上遇到了类似的问题,但是 SVN 目录非常大,不想删除和重新同步,所以我只是在本地复制了文件,然后删除了它们。当更新成功并重新添加文件时。

于 2015-09-24T00:12:50.220 回答
0

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

于 2015-10-21T15:33:27.123 回答
0

我的解决方案是:

  1. 从文件系统执行 svn cleanup
  2. 切换到另一个分支
  3. 解决冲突
  4. 切换到“有问题”的分支
  5. 从 Spring Tool Suite 执行清理
  6. 执行项目更新
于 2017-11-03T17:56:38.507 回答
0

1.'update to reversion'勾选目录下的'only this item' 2.update再次勾选'Fully recursive'

于 2018-06-08T06:14:39.750 回答
0

有同样的问题,对我有用的是。

  1. 尝试将受影响分支的 SVN 签出到新目录中
  2. 等到 .svn 文件夹被添加到新目录中 3.复制并用新的 .svn 目录替换受影响分支中的旧 .svn 目录
  3. SVN 清理
  4. SVN 更新

执行这些步骤后,我无法收到 SVN 校验和不匹配错误,并且更新正常工作

于 2021-11-12T12:29:43.067 回答