按维度统计 git 变更:代码 / 测试代码 / 其他非代码 / 文件,各输出 新增·删除·修改(为 0 的项不显示)。只保证 Go 与 Python 两种语言的识别。零依赖单二进制(纯 Rust 标准库),装上即是 git diffdim 子命令。
diffdim · main...feature 2 个提交 · 7 个文件变更
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
语言 文件 新增 删除 修改
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Go 2 +7 ~1 ██████████████████
───────────────────────────────────────────────────────────────────────
Python 1 -1 ██░░░░░░░░░░░░░░░░
|- 测试 1 +3 ███████░░░░░░░░░░░
(合计) 2 +3 -1
───────────────────────────────────────────────────────────────────────
其他非代码 3 +1 -3 ~1 ███████████░░░░░░░
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
总计(行) 7 +11 -4 ~2
文件(个) 2 1 4
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
tokei 式语言分类布局:每语言一组,测试代码以 |- 子行挂在所属语言下,附文件数列;为 0 的格留空。真彩色数字(绿新增/红删除/蓝修改)+ 纯色比例条带暗色轨道(段序固定、数字直标,色盲亦可辨);无真彩色能力的终端自动退回 8 色,尊重 NO_COLOR。
一键安装(Linux x86_64/arm64、macOS Intel/Apple Silicon):
curl -fsSL https://raw.githubusercontent.com/omeyang/diffdim/main/install.sh | sh或从 Releases 下载二进制放入 PATH(Windows 用 zip),或:
cargo install --git https://github.com/omeyang/diffdim装好即是 git 插件:git 会把 PATH 里的 git-diffdim 自动识别为 git diffdim 子命令,无需任何配置。
git diffdim main feature # 两分支比较(merge-base 三点语法 main...feature)
git diffdim HEAD~5 # 最近 5 个提交
git diffdim -n 5 # 同上
git diffdim v1.0..v2.0 # 显式范围原样透传
git diffdim # 工作区 vs HEAD
git diffdim main feature -v # 附加变更最大文件 Top 10
git diffdim main feature --html report.html # 生成自包含 HTML 报告(浅/深双主题)
git diffdim -C /path/to/repo -n 10 # 指定仓库flag 可写在位置参数之后,-html / --html、-flag=value 均可。
| 维度 | 规则 |
|---|---|
| 代码 | *.go、*.py(排除下述测试与生成代码) |
| 测试代码 | *_test.go;test_*.py、*_test.py、conftest.py、test(s)/ 目录下的 .py |
| 其他非代码 | 其余全部,含 vendor/、node_modules/、*.pb.go、*_pb2*.py 等生成代码 |
| 文件 | 新增(A)/删除(D)/修改(M·R·T) 的文件个数 |
git 原生 diff 只有新增/删除两种行。本工具用 git diff -U0 -M 逐 hunk 配对:
同一 hunk 内 min(删除行数, 新增行数) 计为修改,余量计为纯新增/纯删除。
重命名(-M)按新路径归类;二进制文件只计入文件维度。
--html 生成自包含单文件报告:总览瓷贴、跨维度可比的比例条、按语言明细、文件明细表,浅色/深色主题自适应。配色经色觉缺陷(CVD)校验——"修改"用蓝色(VS Code diff 惯例)而非黄色,黄↔红在绿色盲下不可分。
cargo test # 单元测试 + 端到端测试(构造真实 git 仓库比对)
cargo clippy --all-targets -- -D warnings
cargo build --release # ~450KB 静态二进制MIT
