Rust 重写 Git diff,内容感知提速百倍
推荐指数 67.0 NO. 017 · 2026.11.02
发布2026/11/01Score92Comments33
简介
OmniDiff 是用 Rust 写的开源 difftool,能针对代码、图片、字体、PDF 等不同内容类型选择专用算法做 diff。对每天处理大量代码审查或文档比对的工程师,这意味着不再需要为不同文件类型切换工具,且 98% 以上的场景能在 100ms 内完成。
编辑判断
Git 原生的 diff 对二进制文件基本无能为力,工程师们通常的 workaround 是 gitattributes 配外部转换器或者直接用 Beyond Compare、Kaleidoscope 这些 GUI 工具,但都不支持内容类型的自动识别。OmniDiff 的差异化在于把 filetype detection 和算法选择做进了同一个工具链里,对标的是 GitHub 的 rich diff 体验但放在本地 CLI。
从实测数据看,PDF 的 perfect accuracy 达到 100% 但 fast 比例只有 57%,说明内容越复杂算法开销越大,这是落地时需要权衡的点。如果你团队在做代码审查工具链或 CI 里的变更检测,可以把 OmniDiff 作为 git difftool 的 drop-in replacement 试跑一周,特别关注图片和字体这类以往 diff 体验极差的场景。
社区反馈
意见分歧 28 条评论
核心争论:AGPL 许可证是否阻碍工具成为行业标准, versus 作者坚持 copyleft 的政治选择
How is it better or worse compared to https://github.com/dandavison/delta ?
It’s much much better with moved code. Delta adds color to the standard git diff algorithm. Omnidiff uses a completely different algorithm. About a third of diffs are significantly better.
Okay, I'll give it a try then.