【问题标题】:SVN - Checksum mismatch while updatingSVN - 更新时校验和不匹配
【发布时间】:2012-04-27 14:55:25
【问题描述】:

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

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

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

【问题讨论】:

    标签: svn


    【解决方案1】:

    如果您使用的是 SVN 1.7+,可以使用here 描述的解决方法。

    回顾一下:

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

    【讨论】:

    • 虽然这对我有用,但请注意“svn update --set-depth empty”将删除该路径中的所有内容,因此请先复制
    • 这非常适合在远程位置修复一个巨大的存储库。虽然进行新的结帐会奏效,但需要一个多小时;这花了几分钟。
    • 您好,我使用 window 和 tortoisesvn 作为 svn 客户端。我正在尝试您的解决方案。但它仍然显示问题
    • 这对我很有用,谢谢!值得注意的是,第 1 点是深入到导致问题的实际文件夹(或文件)。然后你不必更新太多。我有一个文件夹,里面有几十个文件,我在文件夹上使用了 Tortoise“更新到->仅此项目”,然后“更新到->完全递归”将其全部取回。仍然每个人都要注意,这会删除该文件夹中的文件!在一个缓慢的 VPN 链接上,带有许多 GB 的存储库和微调的 --set-depths,“标准”解决方案根本没用。
    • 请注意,您可以“svn update --set-depth exclude file.foo”和“svn update file.foo”只对一个文件进行操作,而不是对整个文件夹进行操作。
    【解决方案2】:

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

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

    【讨论】:

    • 我刚刚删除了问题文件所在的文件夹,并更新了整个项目。现在好像没问题了。
    • +1 我发现的另一种选择让我更容易破解 svn 数据库
    • @SeanDowney 怎么做?
    • @arvindwill 抱歉,我的评论不是很清楚,这种方法更容易。这是可怕的选择:maymay.net/blog/2008/06/17/…
    • 这根本不是一个特定的修复程序。您可以随时删除所有本地数据,然后从存储库中重新开始。
    【解决方案3】:

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

    【讨论】:

    • 这是解决我问题的唯一答案。我从来没想过这一点。谢谢!
    【解决方案4】:

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

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

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

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

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

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

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

          然后我就可以成功提交了。

          【讨论】:

            【解决方案8】:

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

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

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

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

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

            这解决了我的问题。

            【讨论】:

              【解决方案9】:

              我找到了非常好的解决方案,解决了我的问题。诀窍是编辑 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工具。

              【讨论】:

                【解决方案10】:

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

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

                这种方法唯一的缺点是这个文件的历史会被删除。

                【讨论】:

                  【解决方案11】:

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

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

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

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

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

                  【讨论】:

                    【解决方案12】:

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

                    【讨论】:

                      【解决方案13】:

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

                      【讨论】:

                        【解决方案14】:

                        我的解决方案是:

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

                        【讨论】:

                          【解决方案15】:

                          1.'update to reversion'勾选目录下的'only this item' 2.再次更新检查'完全递归'

                          【讨论】:

                            【解决方案16】:

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

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

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

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 1970-01-01
                              • 2011-03-10
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2017-04-06
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多