SVN - 更新时校验和不匹配

时间:2012-04-27 14:55:25

标签: svn

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

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

为什么我会这样?我该如何解决?

15 个答案:

答案 0 :(得分:186)

如果您使用的是SVN 1.7+,则会有here所述的解决方法。

回顾一下:

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

答案 1 :(得分:65)

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

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

答案 2 :(得分:6)

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

答案 3 :(得分:5)

我找到了一种更简单的方法来解决这个问题。 你不能直接从eclipse做到这一点。 步骤进行:

  1. 导航到windows
  2. 中的工作区文件夹结构
  3. 重命名文件夹
  4. 在eclipse中刷新
  5. 现在,文件夹和文件将从eclipse中的项目中删除,并将显示在新的重命名文件夹
  6. 现在尝试“与资源库同步”选项。
  7. 这将恢复.svn文件夹中的文本基本文件夹。更新错误时校验和不匹配将不会再出现。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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

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

如果链接已关闭,请查看并按照以下说明操作: enter image description here

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

答案 7 :(得分:1)

在使用此页面中的所有解决方案后,我正在使用Tortoise SVN,

我终于备份了问题文件。并使用 render() { return ( <div> {this.renderTableContent()} </div> ); } renderTableContent() { return( <div> <ul className="session__table"> {this.renderActiveSessionContent()} {this.renderTableButton()} </ul> </div> ); } renderActiveSessionContent() { if (this.state.activeSessions) { this.state.activeSessions.map((session) => { return( <div> <li className="sessionsharing__table__name">{session.UserName}</li> <li className="sessionsharing__table__application">{session.DisplayName}</li> <li className="sessionsharing__table__status">{session.Status}</li> </div> ); } ); } } renderTableButton() { return( <div> <li className="session__table__button"> <input type="button" className="session__button" onClick={this.JoinButton.bind(this)} value = "Text" /> </li> </div> ); } 删除其中的问题文件,然后更新本地文件夹,以便删除本地文件夹中的文件。然后复制回备份文件和Repo Browser,然后我就可以成功更新了。

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

答案 8 :(得分:0)

要解决此问题,请按以下步骤操作:

  1. 打开位于.svn目录中的条目文件,您将收到错误。
  2. 找到给出错误的文件的条目,并将期望值替换为错误的实际值。
  3. 现在同步并尝试更新。
  4. 如果仍然无效。试试这些。它只是一个解决方法:

    1. 从系统中删除文件。
    2. 从条目文件中删除文件条目。 (从文件名到特殊字符开始)。
    3. 现在同步并更新文件。
    4. 这将从存储库获取最新版本的文件,所有冲突都将得到解决。

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

我遇到了类似的错误并修改如下:

(我的修复&#39;是基于一个可能或可能不正确的假设,因为我不太了解颠覆如何在内部工作,但它绝对适用于我)

我假设.svn \ text-base \ import.php.svn-base应该与最新的提交匹配。

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

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

然后我能够成功提交。

答案 12 :(得分:0)

如果您有同事与您合作:

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

2)您update(现在您看到的文件名称无效,校验和无效)

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

4)commit(并请同事update以初始状态取回文件名)

这解决了我的问题。

答案 13 :(得分:0)

我的解决方案是:

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

答案 14 :(得分:0)

1。&#39;更新回复&#39;只检查此项&#39;在目录下 2.update再次检查&#39;完全递归&#39;