#commit #git-repository #statistics #user #collect #present #insertion

nightly bin+lib git-statistics

从 Git 仓库收集提交并以舒适的方式呈现统计信息

1 个不稳定版本

0.1.0 2023 年 10 月 19 日

#578机器学习

GPL-3.0-only

100KB
1K SLoC

TSX 709 SLoC Rust 236 SLoC // 0.0% comments TypeScript 189 SLoC // 0.0% comments JavaScript 17 SLoC

Git 统计

中文

app-icon

从 Git 仓库收集提交并以舒适的方式呈现统计信息。

功能

  • 每个用户的提交统计,包括以下信息维度。

    1. 提交数量
    2. 变更文件数量
    3. 插入数量
    4. 删除数量
    5. 变更行数(插入 + 删除)

    统计结果将排除合并,并且不会包括被标记为重命名或移动的修改。您可以在之上指定一个 PATHSPEC 来进行更精确的匹配。

安装

克隆仓库

git clone https://github.com/hyzmm/git-statistics
cd git-statistics

安装 CLI

cargo install --path .

如果您想体验应用程序的 UI 版本,可以运行以下命令

cargo tauri dev

或制作应用程序安装程序,运行以下命令以构建它

cd app/
npm i
npm run build
cargo tauri build

在 macOS 上,生成的安装包位于 target/release/bundle/dmg

CLI 使用方法

输入 git stats -h 查看完整的帮助信息

git stats -h
This tool provides comprehensive statistics for each user in the current repository.

Usage: git-stats [OPTIONS] [-- <PATHSPEC>...]

Arguments:
  [PATHSPEC]...  A glob pattern to match against file paths. src, *.rs, or src/**/*.rs etc

Options:
  -s, --sort <SORT>            Sort by the specified column. The default is unordered [possible values: commits, files-changed, insertions, deletions, lines-changed]
  -c, --max-count <MAX_COUNT>  Limit the number of ros to show
  -h, --help                   Print help (see more with '--help')
  -V, --version                Print version

这是在 bevy 仓库中的统计示例,转到仓库目录并运行它

$ git stats -c 5 -s commits
██████████████████████████████████████████████████████████████████████ 2820/2820
┌──────────────┬─────────┬─────────┬──────────────┬──────────────┬─────────────┐
 Author       ┆ Commits ┆ Files   ┆ Insertions   ┆ Deletions    ┆ Lines       │
              ┆         ┆ Changed ┆              ┆              ┆ Changed     │
╞══════════════╪═════════╪═════════╪══════════════╪══════════════╪═════════════╡
 Carter       ┆ 1059    ┆ 16247   ┆ 723427       ┆ 682678       ┆ 1406105     │
 Anderson     ┆ (72%)    (89%)    (94%)         (98%)         (96%)       
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
 François     ┆ 214     ┆ 995     ┆ 17871        ┆ 7333         ┆ 25204       │
              ┆ (15%)    (5%)     (2%)          (1%)          (2%)        
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
 Robert Swain ┆ 76      ┆ 421     ┆ 18941        ┆ 3401         ┆ 22342       │
              ┆ (5%)     (2%)     (2%)          (0%)          (2%)        
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
 Jakob        ┆ 62      ┆ 250     ┆ 4825         ┆ 1516         ┆ 6341        │
 Hellermann   ┆ (4%)     (1%)     (1%)          (0%)          (0%)        
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌┤
 Daniel McNab ┆ 57      ┆ 248     ┆ 2508         ┆ 2711         ┆ 5219        │
              ┆ (4%)     (1%)     (0%)          (0%)          (0%)        
└──────────────┴─────────┴─────────┴──────────────┴──────────────┴─────────────┘

这意味着打印出提交数量最高的前 5 位作者。

CLI 具有以下参数

参数 描述
sort 用户的排序方法,默认情况下是无序的。可以按 5 个维度排序:提交、变更文件、插入、删除、变更行数。
max-count 限制显示的 ros 数量。
PATHSPEC 用于匹配文件路径的 glob 模式。src*.rssrc/**/*.rs 等。
使用带有 :! 前缀的标记来排除指定的路径,例如:git stats -- ':!src/assets' 以排除 src/assets 目录中的所有文件。

匹配指定路径

以下是一个示例,仅计算 src 目录中的所有文件以及 crates 目录中的 rs 文件。

git stats -s commits -c 5 -- src crates/**/*.rs

排除指定路径

git stats -s commits -c 5 -- src crates ':!crates/bevy_core'

排除路径的格式与匹配路径的格式相同,但以 :! 前缀开头的路径将从统计结果中排除。

应用

以下是该应用的截图

screenshots

待办事项

  • 更多统计方法。
  • 提供更多安装渠道。

依赖项

~2.5–3.5MB
~61K SLoC