このプロジェクトについて

`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エンコーディングは変換されません。著者名に置換文字が表示される場合があります。