Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

diffdim

按维度统计 git 变更:代码 / 测试代码 / 其他非代码 / 文件,各输出 新增·删除·修改(为 0 的项不显示)。只保证 Go 与 Python 两种语言的识别。零依赖单二进制(纯 Rust 标准库),装上即是 git diffdim 子命令。

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.pyconftest.pytest(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 报告

--html 生成自包含单文件报告:总览瓷贴、跨维度可比的比例条、按语言明细、文件明细表,浅色/深色主题自适应。配色经色觉缺陷(CVD)校验——"修改"用蓝色(VS Code diff 惯例)而非黄色,黄↔红在绿色盲下不可分。

开发

cargo test                        # 单元测试 + 端到端测试(构造真实 git 仓库比对)
cargo clippy --all-targets -- -D warnings
cargo build --release             # ~450KB 静态二进制

License

MIT

About

Dimension-aware git diff statistics: code / tests / non-code / files (Go & Python aware), with pretty terminal + HTML output

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages