每次我提交到SVN时,几乎都会出现校验和不匹配的错误。我已经知道如何修复它(通过检出文件夹并在删除旧文件夹后复制 .svn 文件夹)。我想知道的是什么原因导致这个问题,因为它开始让我发疯了。
操作系统:Windows 7 SVN客户端:VisualSVN、TortoiseSVN
TortoiseSVN错误信息指示检出副本中的损坏。
操作系统:Windows 7 SVN客户端:VisualSVN、TortoiseSVN
TortoiseSVN错误信息指示检出副本中的损坏。
1. 重命名工作目录中的损坏文件
2. 提交更改(这将从代码库中删除已经损坏的文件,并添加已更名文件)
3. 将文件重新命名为原始名称,位于工作目录中
4. 提交更改
对我而言,这个方法十分有效,希望能够帮助您。
我之前遇到过一个解决方案,就是在问题文件所在的文件夹中打开一个命令行窗口,并执行以下命令:
svn update --set-depth empty
svn update --set-depth infinity
我无法记得我在哪里找到这个解决方案,我想归功于它的来源,但是我记不起来了,我是在shell命令历史记录中找到的。
我遇到了这样的错误。我找到的最简单的解决方案是删除文件所在的文件夹,然后使用我选择的svn客户端进行更新。
这将从服务器恢复校验和。
唯一的问题是,当然,你在最后一次提交之前所做的任何更改都将丢失。如果它是一个简单的源文本文件,你可以将整个内容复制到记事本(或任何文本编辑器)中,更新svn,然后再将源文本复制到文件中并提交。
获取文件的校验和:
SELECT CHECKSUM FROM NODES WHERE REPOS_PATH LIKE '%FILE_NAME%'
您需要在NODES表和PRISTINE表中删除记录:
DELETE FROM NODES WHERE CHECKSUM = '来自步骤2的校验和'
DELETE FROM PRISTINE WHERE CHECKSUM = '来自步骤2的校验和'
这对我有用。
我在Eclipse SVN插件中遇到过这种情况,我提交了一些文件,然后在提交过程中点击了取消按钮。然后我得到了与你相同的错误。似乎svn服务器已经接收到了提交的文件并更新了校验和,但是在我的本地svn中,文件仍然指向旧的校验和。
我的解决方法是删除/移动包含问题文件的文件夹,然后再次检出或更新该文件夹。