2026-06-26 Diff 三层对照
定义
Diff 三层对照是指在”差异更新”这个大主题下,三种不同层级的 diff 机制:
- 应用更新(如
electron-updater):软件分发级 diff - 应用内文件更新:内容同步级 diff
git diff:文本差异表达级 diff
三者都涉及”旧状态到新状态的差异”,但关注对象和工程实现完全不同。
核心区别
| 层级 | 关注对象 | 差异粒度 | 执行方式 |
|---|---|---|---|
| 应用更新 | 程序自身 | 安装包 / 文件块 / 差分包 | 下载、校验、安装、重启 |
| 应用内文件更新 | 程序使用的数据或资源 | 文件级 / hash 级 / chunk 级 | 拉 manifest、比对、下载、替换、热加载 |
git diff |
文本内容 | 行级 / hunk 级 | 展示、审查、合并、打 patch |
应用内文件更新的典型模式
- 客户端获取 manifest(文件路径、hash、大小、版本、下载地址)
- 遍历本地文件,对比 hash
- 只下载缺失或变化的文件
- 下载后校验
- 原子替换或热加载
更进阶的优化:
- 文件内部 chunk 级别 diff
- 二进制 patch
- CDN 分片
与 git diff 的关系
可以借鉴:
- 差异最小化思维
- patch 思维
- 版本基线概念
- 三方状态比较
不适合直接照搬:
git diff面向文本行级差异- 应用内文件更新更关心可执行性、稳定性、校验、回滚
一句话概括
electron-updater 是升级 app,应用内文件更新是同步资源,git diff 是描述文本差异。三者都有 diff,但不是同一种 diff。