SVN校验和不匹配的根本原因是什么?

9
每次我提交到SVN时,几乎都会出现校验和不匹配的错误。我已经知道如何修复它(通过检出文件夹并在删除旧文件夹后复制 .svn 文件夹)。我想知道的是什么原因导致这个问题,因为它开始让我发疯了。
操作系统:Windows 7 SVN客户端:VisualSVN、TortoiseSVN
TortoiseSVN错误信息指示检出副本中的损坏。
6个回答

7

1. 重命名工作目录中的损坏文件

2. 提交更改(这将从代码库中删除已经损坏的文件,并添加已更名文件)

3. 将文件重新命名为原始名称,位于工作目录中

4. 提交更改

对我而言,这个方法十分有效,希望能够帮助您。


谢谢。重命名我的冲突文件有所帮助。我重命名了然后还原了冲突的文件。 - Ikrom

5
是的,这个错误有点烦人。它可能由于网络故障、停电或文件损坏等多种原因引起。据我所知,你找到的解决方法是克服这个错误的最佳途径。
更多关于出现此错误的原因和理论的详细信息:(类似的问题,其中md5值为空;而在你的情况下,它与服务器上的值不同)
修复SVN校验和Repair SVN Checksum

4

我之前遇到过一个解决方案,就是在问题文件所在的文件夹中打开一个命令行窗口,并执行以下命令:

svn update --set-depth empty
svn update --set-depth infinity

我无法记得我在哪里找到这个解决方案,我想归功于它的来源,但是我记不起来了,我是在shell命令历史记录中找到的。


太棒了!这是最简单的尝试...而且它像魔法一样奏效。在Windows 7上使用64位TortoiseSVN 1.7.11。 - liamf
真的是非常好的解决方案。这个问题在过去的一个月里一直困扰着我,直到我找到了这个解决方案。干得好! - vivimice

1

我遇到了这样的错误。我找到的最简单的解决方案是删除文件所在的文件夹,然后使用我选择的svn客户端进行更新。

这将从服务器恢复校验和。

唯一的问题是,当然,你在最后一次提交之前所做的任何更改都将丢失。如果它是一个简单的源文本文件,你可以将整个内容复制到记事本(或任何文本编辑器)中,更新svn,然后再将源文本复制到文件中并提交。


0
  1. 首先,您需要连接SQLite数据库(.svn\wc.db)
  2. 获取文件的校验和:

    SELECT CHECKSUM FROM NODES WHERE REPOS_PATH LIKE '%FILE_NAME%'
    
  3. 您需要在NODES表和PRISTINE表中删除记录:

    DELETE FROM NODES WHERE CHECKSUM = '来自步骤2的校验和'
    DELETE FROM PRISTINE WHERE CHECKSUM = '来自步骤2的校验和'
    

这对我有用。


0

我在Eclipse SVN插件中遇到过这种情况,我提交了一些文件,然后在提交过程中点击了取消按钮。然后我得到了与你相同的错误。似乎svn服务器已经接收到了提交的文件并更新了校验和,但是在我的本地svn中,文件仍然指向旧的校验和。

我的解决方法是删除/移动包含问题文件的文件夹,然后再次检出或更新该文件夹。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接