このプロジェクトについて
`git-stats`は、Rustで書かれたコマンドラインツールで、`git log`の情報を解析して集計されたコミット統計を生成します。gitの純Rust実装である`gitoxide`を使用してリポジトリを直接読み取るため、gitバイナリは不要です。
## 機能
- **集計統計**: 著者ごとにコミットを集計し、コミット数、変更ファイル数、挿入行数、削除行数、正味の行変更数を表示します。
- **リビジョン範囲**: 単一リビジョン、`A..B`、`A...B`の範囲をサポートし、端点はref、短いハッシュ、`@{n}`などで指定できます。
- **フィルタリング**: 著者(正規表現)、日付範囲(`--since`、`--until`)、リビジョン範囲で制限できます。
- **レビュー追跡**: オプションで、`Acked-by`、`Tested-by`、`Reviewed-by`のgitトレーラーに基づいてレビュアー/テスターを表示します。
- **並べ替え**: 任意の列(著者、コミット数、ファイル数、挿入行数、削除行数、正味変更数)で昇順または降順に並べ替えられます。
- **メール表示**: オプションで著者のメールアドレスを表示できます。
## インストール
crates.ioからインストール:
```
cargo install git-stats --locked
```
または、プリビルドバイナリ用の`cargo-binstall`を使用:
```
cargo binstall git-stats
```
Arch Linuxでは、AURパッケージ`git-stats`(ソース)または`git-stats-bin`(プリビルド)を使用します。
`mise`を使用すると、チェックサムとSLSA provenance検証付きのプリビルドバイナリをインストールできます:
```
mise use -g github:lukehsiao/git-stats
```
## 使用方法
```
使用方法: git-stats [OPTIONS] [revision-range]
引数:
[revision-range] 指定されたリビジョン範囲のコミットのみを表示 [デフォルト: HEAD]
オプション:
-e, --email 各著者のメールアドレスを表示
-r, --reviews gitトレーラーに基づいてコミットをレビュー/テストした人を表示
-s, --sort <SORT> 並べ替える列 [デフォルト: commits] [可能な値: author, commits, files, insertions, deletions, net]
--reverse 並べ替え順序を逆にする
-a, --author <AUTHOR> 正規表現パターンに一致するコミットに制限
--since <SINCE> 指定した日付より新しいコミットに制限
--until <UNTIL> 指定した日付より古いコミットに制限
-h, --help ヘルプを印刷
-V, --version バージョンを印刷
```
出力例:
```
$ git stats -r origin..HEAD
著者 コミット数 変更ファイル数 挿入行数 削除行数 正味Δ
Luke Hsiao 67 117 +2616 -1126 +1490
dependabot[bot] 31 62 +203 -267 -64
合計 98 179 +2819 -1393 +1426
レビュアー/テスター コミット数
Luke Hsiao 1
```
## 注意事項
- **リビジョン範囲**: 単純な形式のみサポートされています。特殊なgitrevisions(7)構文は解釈されません。
- **日付フィルタリング**: ISO 8601、RFC 2822、Unixタイムスタンプ、および「2 weeks ago」などの相対日付を受け入れます。フィルタリングはコミッター日付に基づきます。
- **著者マッチング**: 生のヘッダーを使用する`git log --author`とは異なり、mailmap解決済みの著者に対してマッチングします。
- **マージコミット**: コミットとしてカウントされますが、行/ファイルの変更には寄与しません。
- **シャロークローン**: 動作しますが、統計がフルクローンと異なる場合があります。警告が印刷されます。
- **サブモジュール**: 単一の変更ファイルとしてカウントされ、gitのリネーム処理と若干の差異があります。
- **行数**: gitoxideのdiffエンジンからのもので、一部のハンクでgitとわずかに異なる場合があります。
- **SHA-256リポジトリ**: サポートされていません(gitoxideの制限)。
- **コミットエンコーディング**: 非UTF-8エンコーディングは変換されません。著者名に置換文字が表示される場合があります。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.