当前位置: 首页 > news >正文

SVN克隆或更新遇到Error: Checksum mismatch for xxx

文章目录

  • 前言
  • 问题的产生
  • 探索解决方案
  • 正式的解决方法
  • 背后的故事
  • 总结

前言

TortoiseSVN 作为版本控制常用的工具,有一个更为人们熟知的名字 SVN,客观的讲SVN的门槛相比Git而言还是低一些的,用来存储一些文件并保留历史记录比较方便,但使用SVN还是会经常需要这样那样的问题,特别是当仓库很大的时候,提示的问题往往让初学者、甚至是经常使用的人一脸懵,比如这个 Checksum mismatch for 问题,通常SVN问题都有一个终极解法,那就是重新克隆一份再操作,这就像大多数的电脑问题重启后就能解决一样,不过偶尔有一些情景不适合采用重新克隆的解法,我们就得想一个更精确的办法去解决了。

问题的产生

在克隆一个300多G的库时,报了下面这个错误,总结来说这个错误表述的就是“心有所求而不得”,期望得到一个md5是 2c448c9f40b0dd561539b80ec3cfcaa2bundle_103_cp_delafere_e_buff_wuqi.ab文件,但是下载后的文件计算md5得到的是 a2e41ec2779a23d88b31e4237ad43ceb,并不是自己想要的,提示如下:

Error: Checksum mismatch for
Error:  'E:\gameproject\prefabs\bundle_103_cp_delafere_e_buff_wuqi.ab':
Error:
Error:    expected:  2c448c9f40b0dd561539b80ec3cfcaa2
Error:      actual:  a2e41ec2779a23d88b31e4237ad43ceb

探索解决方案

先说说网上一些常见的解决办法:

  1. 删除了整个库,重新克隆下载,这个方法99%可行,但是整个库太大了,我不想重新下载
  2. Clean up 之后继续更新,我试过了不行
  3. 先在出错的文件夹下执行 svn update --set-depth empty 删除文件夹下所有文件,再执行 svn update --set-depth infinity 更新,这是流传的最广的解决办法,在我这不行
  4. 先在 Update to revision... 中选择 Update Depth 为 Only this item 更新,然后再选择 Fully recursive 更新,原理上和上一步类似,在我这也不行

其实仔细分析这几种解决方案的本质,都是把错误的文件删除掉再重新更新,但是为什么不起作用呢?

从我最终解决问题的方法来看是,针对我遇到的问题,上面提到的一些方法并没有将错误的文件成功删除,简单分析下svn克隆和更新的过程,很可能不准确,但是我不在此处不深究,暂时还用不到这一块。

我们在传输文件时为了保证文件的完整性,经常会用一些摘要算法比如md5、sha1等来计算文件摘要,通过比较文件摘要来判断文件传输是否完整,而SVN这个工具每时每刻都在上传下载传输文件,所以也用到了摘要比对的技术。

以较新的SVN版本为例,是将sha1和md5存到了.svn/wc.db中(太老的版本md5是存储到文件中的),下载时先更新 wc.db,然后将原始文件的元文件下载到 .svn/pristine 文件夹中,然后比较这些文件的md5值与 wc.db 记录的md5值是否一致,如果一样就从元文件中提取出真正的文件放到库中,这个文件就算下载完了,如果不一致就会报出上面的错误。

分析过后我们只要找到错误的元文件,删除后重新下载就解决了。

正式的解决方法

首先打开从 .svn/wc.db 中查找的元文件的名字,可以使用你熟悉的工具,我用的是 SQLiteSpy.exe有图形界面方便一下,最基础的也可以用 sqlite3.exe 这种命令行的工具,执行以下sql语句:

select * from NODES where local_relpath = 'prefabs/bundle_103_cp_delafere_e_buff_wuqi.ab'

执行过后可以查到checksum列的值为 $sha1$f9fd60e244a004cc30fcc83e8e59e7466b3dca6a,这就是元文件的名字,也可以通过下面的语句查到md5值

select * from PRISTINE where checksum = '$sha1$f9fd60e244a004cc30fcc83e8e59e7466b3dca6a';

结果中md5_checksum列的值为 $md5$2c448c9f40b0dd561539b80ec3cfcaa2 就是报错中提到的那个期望值了。

接下来进入 .svn/pristine/f9 文件夹,删除 f9fd60e244a004cc30fcc83e8e59e7466b3dca6a.svn-base 文件,然后在仓库根目录更新就正常了

背后的故事

问题解决了,那么产生的这种问题的原因是什么呢?为什么会md5值不一致呢?我们知道文件的md5值是根据文件内容计算出来的,下载后的文件md5不是预期的值说明文件内容发生了变化。

我用比较工具对比了正常的文件和出错的文件发现,两个大小都为29949字节的文件,其中有一个字节发生了偏差,正确的文件该字节值为 2F,而错误的文件对应值为 2E,就弄错了这一个字节,导致SVN的文件比对报错了。

这一个字节差异产生的原因,可能有很多种,比如传输过程中数据损坏、压缩或加密问题、数据损坏或硬盘问题,我这里大概率是因为下载时机器重启的原因。

这让我想起了7、8年前下载游戏服务器包无法启动的问题,当时下载完启动各种异常,比较文件大小也是一样的,但是计算md5后发现不同,应该也是传输过程中发生了错误。

总结

  • SVN遇到的问题有90%都可以通过完整删除后重新克隆下载的方式解决
  • 老版本的文件checksum值存储到 .svn/entries 文件中,较新版本的文件将这些值存储在 .svn/wc.db
  • 通过 select * from NODES where local_relpath = 'xxx' 方式可以从 .svn/wc.db 中查到文件的 sha1值
  • svn/pristine 中找到 $sha1$.svn-base 删除即可重新下载了

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

待到秋来九月八,我花开后百花杀。有些句子在经历了一些事以后,自然而然就有了新的理解,这与儿时死记硬背下来的赏析是完全不同的~

相关文章:

SVN克隆或更新遇到Error: Checksum mismatch for xxx

文章目录 前言问题的产生探索解决方案正式的解决方法背后的故事总结 前言 TortoiseSVN 作为版本控制常用的工具&#xff0c;有一个更为人们熟知的名字 SVN&#xff0c;客观的讲SVN的门槛相比Git而言还是低一些的&#xff0c;用来存储一些文件并保留历史记录比较方便&#xff0…...

QT交互界面:实现按钮运行脚本程序

一.所需运行的脚本 本篇采用上一篇文章的脚本为运行对象&#xff0c;实现按钮运行脚本 上一篇文章&#xff1a;从0到1&#xff1a;QT项目在Linux下生成可以双击运用的程序&#xff08;采用脚本&#xff09;-CSDN博客 二.调用脚本的代码 widget.cpp中添加以下代码 #include &…...

驱动和芯片设计哪个难

驱动和芯片设计哪个难 芯片设计和驱动开发 芯片设计和驱动开发 都是具有挑战性的工作&#xff0c;它们各自有不同的难点和要求。 对于芯片设计&#xff0c;它是一个集高精尖于一体的复杂系统工程&#xff0c;涉及到从需求分析、前端设计、后端设计到流片的全过程。 芯片设计的…...

【云原生】云原生后端:监控与观察性

目录 引言一、监控的概念1.1 指标监控1.2 事件监控1.3 告警管理 二、观察性的定义三、实现监控与观察性的方法3.1 指标收集与监控3.2 日志管理3.3 性能分析 四、监控与观察性的最佳实践4.1 监控工具选择4.2 定期回顾与优化 结论参考资料 引言 在现代云原生架构中&#xff0c;监…...

在 ubuntu20.04 安装 docker

1、替换清华源 替换 sources.list 里面的内容 sudo vim /etc/apt/sources.list# 默认注释了源码镜像以提高 apt update 速度&#xff0c;如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src htt…...

前端开发设计模式——观察者模式

目录 一、定义和特点 1. 定义 2. 特点 二、实现方式 1. 使用 JavaScript 实现观察者模式的基本结构 2. 实际应用中的实现示例 三、使用场景 1. 事件处理 2. 数据绑定 3. 异步通信 4. 组件通信 四、优点 1. 解耦和灵活性 2. 实时响应和数据一致性 3. 提高代码的可…...

永磁同步电机高性能控制算法(17)——无差拍预测转速控制

1.前言 前期写了比较多的关于无差拍预测电流控制的东西。 https://zhuanlan.zhihu.com/p/659205719https://zhuanlan.zhihu.com/p/659205719 https://zhuanlan.zhihu.com/p/660266190https://zhuanlan.zhihu.com/p/660266190 https://zhuanlan.zhihu.com/p/719591343https://z…...

【GIT】Visual Studio 中 Git 界面中, 重置 和 还原

在 Visual Studio 的 Git 界面中&#xff0c;“重置” 和 “还原” 是两个常用的 Git 操作。它们的主要区别在于应用场景和影响范围。 1. 重置&#xff08;Reset&#xff09; 重置用于更改当前分支的提交历史&#xff0c;通常用于撤销或删除某些提交。重置操作可能会更改 Git…...

开源一款前后端分离的企业级网站内容管理系统,支持站群管理、多平台静态化,多语言、全文检索的源码

大家好&#xff0c;我是一颗甜苞谷&#xff0c;今天分享一款前后端分离的企业级网站内容管理系统&#xff0c;支持站群管理、多平台静态化&#xff0c;多语言、全文检索的源码。 前言 在当今的数字化时代&#xff0c;企业网站和个人博客已成为信息传播和品牌建设的重要渠道。…...

【electron+vue3】使用JustAuth实现第三方登录(前后端完整版)

实现过程 去第三方平台拿到client-id和client-secret&#xff0c;并配置一个能够外网访问回调地址redirect-uri供第三方服务回调搭建后端服务&#xff0c;引入justauth-spring-boot-starter直接在配置文件中定义好第一步的三个参数&#xff0c;并提供获取登录页面的接口和回调…...

Amcor 如何借助 Liquid UI 实现SAP PM可靠性

背景介绍 安姆科是塑料行业的全球领军企业&#xff0c;该企业认识到 SAP 工厂维护&#xff08;SAP PM&#xff09;对于确保高效的维护管理的重要性。 在诸如制造业等高度依赖机械设备的行业中&#xff0c;SAP PM是一种通过数据驱动决策来最大限度减少停机时间、降低间接成本、…...

【Redis】常见基本全局命令

一、Redis俩大核心命令 由于Redis是以键值对的形式进行数据存取&#xff0c;自然就离不开不断的存储和获取&#xff0c;而其所对应的命令则是set和get&#xff0c;如此说来二者为Redis的核心基础命令也不为过。 作用&#xff1a;用于存储Stirng类型的数据 返回&#xff1a;当…...

探索国际数据空间(IDS)架构(上)

在当今数字化时代&#xff0c;数据的重要性日益凸显&#xff0c;而国际数据空间&#xff08;IDS&#xff09;作为一个新兴的概念&#xff0c;正逐渐成为数据管理和共享的关键领域。今天&#xff0c;我们就来一起探索一下 IDS 的精妙架构。 参考文章&#xff1a;国际数据空间&am…...

如何选择好用的U盘数据恢复软件免费版?2024年热门榜单有哪些?

U盘是我们用来存数据的小玩意儿&#xff0c;又方便又好用。但是&#xff0c;有时候因为不小心删掉了、格式化了或者中病毒了&#xff0c;U盘里的东西就没了&#xff0c;这可让人头疼。好在有很多免费的U盘数据恢复软件能帮我们找回这些丢失的数据。那怎么挑一个好用的免费数据恢…...

音视频入门基础:AAC专题(12)——FFmpeg源码中,解码AudioSpecificConfig的实现

音视频入门基础&#xff1a;AAC专题系列文章&#xff1a; 音视频入门基础&#xff1a;AAC专题&#xff08;1&#xff09;——AAC官方文档下载 音视频入门基础&#xff1a;AAC专题&#xff08;2&#xff09;——使用FFmpeg命令生成AAC裸流文件 音视频入门基础&#xff1a;AAC…...

UDP组播测试

支持组播的接口&#xff1a; ip a | grep MULTICAST 环回接口虽然显示不支持组播&#xff0c;实际也可以用于本地测试。 添加路由&#xff08;非必须&#xff1f;&#xff09;&#xff1a; ip route add 239.0.0.0/24 via 10.10.10.206 dev eth0 开放防火墙&#xff1a; 查…...

【Nas】X-Doc:jellyfin“该客户端与媒体不兼容,服务器未发送兼容的媒体格式”问题解决方案

【Nas】X-Doc&#xff1a;jellyfin“该客户端与媒体不兼容&#xff0c;服务器未发送兼容的媒体格式”问题解决方案 当使用Jellyfin播放视频时出现“该客户端与媒体不兼容&#xff0c;服务器未发送兼容的媒体格式”&#xff0c;这是与硬件解码和ffmpeg设置有关系&#xff0c;具体…...

504 Gateway Time-outopenresty

504 Gateway Time-out openresty 问题背景&#xff1a; 当自己点开知乎页面以后&#xff0c;发现官网没有出现任何问题&#xff0c;点击官网以后开始出现各种各样的报错&#xff01; 一下是来源ai的介绍&#xff1a;&#xff08;通过搜索这种形式帮助自己进行记忆&#xff09;…...

SpringBoot篇(自动装配原理)

目录 一、自动装配机制 1. 简介 2. 自动装配主要依靠三个核心的关键技术 3. run()方法加载启动类 4. 注解SpringBootApplication包含了多个注解 4.1 SpringBootConfiguration 4.2 ComponentScan 4.3 EnableAutoConfiguration 5. SpringBootApplication一共做了三件事 …...

《Web性能权威指南》-WebRTC-读书笔记

本文是《Web性能权威指南》第四部分——WebRTC的读书笔记。 第一部分——网络技术概览&#xff0c;请参考网络技术概览&#xff1b; 第二部分——无线网络性能&#xff0c;请参考无线网络性能&#xff1b; 第三部分——HTTP&#xff0c;请参考HTTP&#xff1b; 第四部分——浏览…...

前端工程化:代码审查最佳实践

前端工程化&#xff1a;代码审查最佳实践 前言 代码审查是保障代码质量的第一道防线。一个好的代码审查流程不仅能发现潜在的bug&#xff0c;还能促进团队知识共享&#xff0c;提升整体代码水平。今天我就来给大家讲讲如何建立一套高效的代码审查流程。 什么是代码审查 代码审查…...

从苹果三星2016年困境看消费电子行业创新与供应链管理

1. 行业巨头的十字路口&#xff1a;苹果与三星的2016年镜像2016年&#xff0c;对于全球消费电子行业而言&#xff0c;是一个充满微妙转折的年份。站在聚光灯下的两大巨头——苹果与三星&#xff0c;仿佛站在了同一面镜子的两侧&#xff0c;映照出截然不同的困境&#xff0c;却又…...

双模型协同工作流架构解析:从感知到决策的AI工程实践

1. 项目概述&#xff1a;双模型协同工作流的深度解构最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“openclaw-dual-model-workflow”。光看这个名字&#xff0c;就能嗅到一股浓浓的工程实践和架构设计的味道。这不像是一个简单的应用Demo&#xff0c;更像是一个为解决特…...

AI辅助生殖:多模态数据融合与深度学习在胚胎评估中的应用

1. 项目概述&#xff1a;当AI遇见生命的起点在辅助生殖技术&#xff08;ART&#xff09;这个关乎无数家庭希望的前沿领域&#xff0c;每一次胚胎移植都像是一场精密的“押注”。医生和胚胎学家们需要在显微镜下&#xff0c;从数个甚至数十个胚胎中&#xff0c;挑选出那个最有潜…...

Scarpet脚本语言深度解析:在Fabric Carpet中编写高级自动化程序的完整指南

Scarpet脚本语言深度解析&#xff1a;在Fabric Carpet中编写高级自动化程序的完整指南 【免费下载链接】fabric-carpet Fabric Carpet 项目地址: https://gitcode.com/gh_mirrors/fa/fabric-carpet Scarpet脚本语言是Fabric Carpet模组中的强大编程工具&#xff0c;专门…...

无实景不建模 孪生自生成:无改造无感追踪技术路径,重构数字孪生与视频孪生交付逻辑

数字孪生长期深陷建模依赖的行业困局&#xff0c;传统技术路径均以人工建模、激光点云扫描、第三方测绘为前置核心环节&#xff0c;不仅带来高昂的资金投入、漫长的实施周期&#xff0c;更存在模型更新滞后、实景适配性差、运维成本高企等难以破解的行业顽疾。同时&#xff0c;…...

如何快速掌握DeepL翻译插件:终极跨语言浏览解决方案

如何快速掌握DeepL翻译插件&#xff1a;终极跨语言浏览解决方案 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 在全球化的数字时代&#xff0c;语言障碍是获取国际…...

不止于VWF:用Modelsim SE-64 10.4 为你的Quartus 18.1 Verilog项目做高效前仿真

超越基础工具链&#xff1a;Modelsim SE-64与Quartus 18.1深度协同仿真指南 当Verilog代码通过Quartus编译后&#xff0c;许多开发者会止步于基础功能验证。但真正的设计可靠性往往隐藏在时序边界条件和复杂状态机交互中——这正是专业仿真工具的价值所在。本文将带您突破VWF的…...

FreeRouting终极指南:如何快速掌握开源PCB自动布线工具

FreeRouting终极指南&#xff1a;如何快速掌握开源PCB自动布线工具 【免费下载链接】freerouting Advanced PCB auto-router 项目地址: https://gitcode.com/gh_mirrors/fr/freerouting FreeRouting是一款功能强大的开源PCB自动布线工具&#xff0c;能够帮助你高效完成复…...

Unity半透明Shader:从阴影投射到接收的完整实战解析

1. 半透明Shader的两种实现方式 在Unity中实现半透明效果主要有两种技术路线&#xff1a;透明度测试&#xff08;Alpha Test&#xff09;和透明度混合&#xff08;Alpha Blending&#xff09;。这两种方式看似都能实现透明效果&#xff0c;但底层原理和适用场景却大相径庭。 …...