当前位置: 首页 > 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; 第四部分——浏览…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...