https://github.com/cat2151/gh-commit-ledger
A TUI that displays the commit count of your public repositories.
https://github.com/cat2151/gh-commit-ledger
github rust tui
Last synced: about 2 months ago
JSON representation
A TUI that displays the commit count of your public repositories.
- Host: GitHub
- URL: https://github.com/cat2151/gh-commit-ledger
- Owner: cat2151
- License: mit
- Created: 2026-04-24T14:16:27.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-24T23:27:38.000Z (2 months ago)
- Last Synced: 2026-04-25T01:28:55.270Z (2 months ago)
- Topics: github, rust, tui
- Language: Rust
- Homepage: https://cat2151.github.io/gh-commit-ledger/
- Size: 56.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.ja.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# gh-commit-ledger
あなたの公開リポジトリの commit数 を表示するTUIです。Rustで書かれています。
## 特徴
- 昨日のcommit数と、総commit数を、全リポジトリについて集計
- クリップボードにコピー
## 参考例
- 20commit増えてた
- GitHub Copilot Coding Agentにいくつかissueを投げて寝て起きると20commitくらい増えます
- 1commitと20commitで同じ価値の場合もあります。数字にこだわらず、昨日はcommitがあった、くらいの目安で運用することをおすすめします
## 必要なもの
- Rust
- GitHub CLI (`gh`)
- `gh` で GitHub にログイン済みであること
GitHub CLI の状態は次のコマンドで確認できます。
```powershell
gh auth status
```
未ログインの場合は、先に認証してください。
```powershell
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.toml` と `cache.json` は指定したディレクトリに保存されます。
`e` キーを押すと設定ファイルを editor で開きます。利用する editor は `editors` に書かれた順に試します。デフォルトでは `fresh`、`zed`、`code`、`edit`、`nano`、`vim` の順です。
`[clipboard].message` で、クリップボードへコピーする本文メッセージを変更できます。TUI ではこのメッセージが既存の集計表示とは別枠で表示されます。
```toml
editors = ["fresh", "zed", "code", "edit", "nano", "vim"]
[clipboard]
message = "昨日は {commits_yesterday} 件の commit をしました。\nこれまでの総 commit 数は {total_commits} 件です。"
```
利用できるプレースホルダーは次の 2 つです。
| プレースホルダー | 内容 |
| --- | --- |
| `{commits_yesterday}` | 昨日の commit 数 |
| `{total_commits}` | 総 commit 数 |
## 集計仕様
このツールは、ローカルタイムゾーンで見た「昨日」と「一昨日」を基準にします。
- `昨日 23:59:59` 時点の各リポジトリのデフォルトブランチ累計 commit 数を取得
- `一昨日 23:59:59` 時点の累計 commit 数も取得
- 2 つの値の差分を「昨日の commit 数」として扱う
- すべての対象リポジトリの `昨日 23:59:59` 時点の累計を合計して「総 commit 数」として表示
対象は GitHub CLI の認証ユーザーの public repository です。fork は除外されます。デフォルトブランチがないリポジトリや、デフォルトブランチの先端が commit として扱えないリポジトリは `0` として扱われます。
リポジトリ一覧は GitHub CLI の `gh repo list --limit 1000 --visibility public --source --no-archived=false` で取得します。
## キャッシュ
取得結果は設定ファイルと同じ OS のローカル設定ディレクトリ配下に保存されます。実際のパスは TUI 下部の `cache:` に表示されます。
キャッシュには、リポジトリごとに時点別の累計 commit 数が保存されます。通常の起動では既存キャッシュを利用し、不足している分だけ GitHub から取得します。
キャッシュはリポジトリごとに最大 16 時点分を保持し、上限を超えると古い時点から削除します。
強制的に再取得したい場合は、TUI 上で `r` を押してください。
## 細かい仕様
- GitHub CLI の認証ユーザーが所有する public repository を集計
- fork を除外し、archived repository は集計対象に含める
- 各リポジトリのデフォルトブランチの累計 commit 数を GraphQL API で取得
- 昨日の commit 数、総 commit 数、動きがあったリポジトリを TUI で表示
- 取得結果を OS のローカル設定ディレクトリへ保存し、再実行時に再利用
- `c` キーで表示中の Clipboard Message をクリップボードへコピー
- OS のローカル設定ディレクトリに `config.toml` を作成し、コピー用メッセージをカスタマイズ
## トラブルシューティング
### `gh コマンドの起動に失敗しました`
GitHub CLI がインストールされていないか、PATH に含まれていません。`gh --version` が実行できる状態にしてください。
### `gh コマンドが失敗しました`
GitHub CLI の認証、ネットワーク接続、GitHub API の制限を確認してください。
```powershell
gh auth status
gh api user
```
### 初回実行が遅い
初回はすべての対象 public repository に対して API を呼び出します。2 回目以降はキャッシュが使われるため、同じ日付の集計は速くなります。