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

时间:2011-02-22 08:12:07

标签: windows svn tortoisesvn visualsvn corrupt-data

几乎每次我提交SVN时,我都会遇到校验和不匹配错误。我已经知道如何修复它(通过签出文件夹并在删除旧文件夹后复制.svn文件夹)。我想知道的是导致这种情况导致我疯狂的原因。

操作系统:Windows 7 SVN客户:VisualSVN,TortoiseSVN

TortoiseSVN error message indicating corruption in checked-out copy

6 个答案:

答案 0 :(得分:6)

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

2.Commit(它将从存储库中删除损坏的文件,并添加重命名的文件)

3.将文件重命名为工作目录中的原始名称

4.Commit

对我而言,工作就像一个魅力,希望它有所帮助。

答案 1 :(得分:5)

是的,这个错误有点烦人。可能会出现多种原因,例如网络损坏,断电或说文件损坏。你弄清楚的解决方法是克服这个错误的最佳方法..

有关出现此错误的原因和理论的更多详细信息:(类似问题,md5为null;在您的情况下,其值与服务器上的值不同)

Repair SVN Checksum

答案 2 :(得分:3)

我之前可以解决的问题是在问题文件所在的文件夹中打开命令shell并执行以下操作:

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

我不记得我在哪里找到了解决方案,我想在应有的地方给予肯定,但我记不住了,我在shell命令历史中找到了这个。

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:0)

这次曾经发生在我的eclipse svn插件中,我提交了一些文件,然后在它正在进行时点击了取消按钮。然后我得到了与你相同的错误。似乎svn服务器已收到提交的文件并更新了校验和,但在我的本地svn中,文件仍然指向旧的校验和。

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

答案 5 :(得分: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 = 'CHECKSUM from 2.'
    DELETE FROM PRISTINE WHERE CHECKSUM = 'CHECKSUM from 2.'
    
  4. 它对我有用。