View on GitHub

gh-commit-ledger

gh-commit-ledger

gh-commit-ledger

あなたの公開リポジトリの commit数 を表示するTUIです。Rustで書かれています。

特徴

参考例

必要なもの

GitHub CLI の状態は次のコマンドで確認できます。

gh auth status

未ログインの場合は、先に認証してください。

gh auth login

インストール

cargo install --force --git https://github.com/cat2151/gh-commit-ledger

実行

gh-commit-ledger

アップデート

gh-commit-ledger update

使い方

起動すると自動で集計が始まります。初回実行時は対象リポジトリをすべて取得するため、リポジトリ数によっては時間がかかります。

設定

起動時に設定ファイルがない場合は、デフォルト値で config.toml を作成します。

Windows では %LOCALAPPDATA%\gh-commit-ledger\config.toml に保存されます。実際のパスは TUI 下部の config: に表示されます。

設定ディレクトリは GH_COMMIT_LEDGER_CONFIG_DIR 環境変数で上書きできます。この場合、config.tomlcache.json は指定したディレクトリに保存されます。

e キーを押すと設定ファイルを editor で開きます。利用する editor は editors に書かれた順に試します。デフォルトでは freshzedcodeeditnanovim の順です。

[clipboard].message で、クリップボードへコピーする本文メッセージを変更できます。TUI ではこのメッセージが既存の集計表示とは別枠で表示されます。

editors = ["fresh", "zed", "code", "edit", "nano", "vim"]

[clipboard]
message = "昨日は {commits_yesterday} 件の commit をしました。\nこれまでの総 commit 数は {total_commits} 件です。"

利用できるプレースホルダーは次の 2 つです。

プレースホルダー 内容
{commits_yesterday} 昨日の commit 数
{total_commits} 総 commit 数

集計仕様

このツールは、ローカルタイムゾーンで見た「昨日」と「一昨日」を基準にします。

対象は GitHub CLI の認証ユーザーの public repository です。fork は除外されます。デフォルトブランチがないリポジトリや、デフォルトブランチの先端が commit として扱えないリポジトリは 0 として扱われます。

リポジトリ一覧は GitHub CLI の gh repo list <login> --limit 1000 --visibility public --source --no-archived=false で取得します。

キャッシュ

取得結果は設定ファイルと同じ OS のローカル設定ディレクトリ配下に保存されます。実際のパスは TUI 下部の cache: に表示されます。

キャッシュには、リポジトリごとに時点別の累計 commit 数が保存されます。通常の起動では既存キャッシュを利用し、不足している分だけ GitHub から取得します。

キャッシュはリポジトリごとに最大 16 時点分を保持し、上限を超えると古い時点から削除します。

強制的に再取得したい場合は、TUI 上で r を押してください。

細かい仕様

トラブルシューティング

gh コマンドの起動に失敗しました

GitHub CLI がインストールされていないか、PATH に含まれていません。gh --version が実行できる状態にしてください。

gh コマンドが失敗しました

GitHub CLI の認証、ネットワーク接続、GitHub API の制限を確認してください。

gh auth status
gh api user

初回実行が遅い

初回はすべての対象 public repository に対して API を呼び出します。2 回目以降はキャッシュが使われるため、同じ日付の集計は速くなります。