タイトルは若者エントリメーカーで生成しました。
コミットステータスというのは GitHub の API で特定のコミットに success/failure/pending のステータスを与えることができるやつで、例えば CI でテストした結果がプルリクエストのウェブ画面で確認できる。誰でも見たことあると思う。
業務でも使ってるけど、git push したあとにいちいち結果を確認するのが面倒だったので、ターミナルから確認できるようなのを作った。
プロンプトに表示するとこういう感じで✓が確認できて便利(最後に設定例があります)。
インストール・使い方
% go get github.com/motemen/github-commit-status-mark
普通に起動すると現在のリポジトリの最新のコミット(HEAD)のステータスを GitHub から取得してきて、色付きの文字で表示する。
このスクリーンショットにはないけど、ステータスが存在しないときは "?" と表示する。
設定
まずはいつも通り https://github.com/settings/tokens/new からトークンを作成してください。たぶん "repo:status" 権限だけで動くと思う。パブリックリポジトリだけなら設定しなくてもいいけど、たぶんすぐに API Limit に達すると思う。
環境変数
GITHUB_COMMIT_STATUS_TOKEN
にトークンを入れる。この場合 GitHub:Enterprise に対応してないので微妙。
.netrc
(new!)
あの .netrc に拙作のツールとしては初めて挑戦。ドメインに対するアカウント設定となるので、他の GitHub 系ツールが .netrc に対応していればトークンを共有することになる。楽だけど、権限の管理という点では不安な一面も。
domain api.github.com user motemen password YOUR_TOKEN domain ghe.example.com user motemen password YOUR_TOKEN
.gitconfig
おなじみ gitconfig。github-commit-status.token
もしくは github-commit-status.https://ghe.example.com/.token
にトークンを設定する。
[github-commit-status] token = YOUR_TOKEN [github-commit-status "https://ghe.example.com/"] token = YOUR_TOKEN
キャッシュ
外部の API を叩くので、.github-commit-status/ 以下にキャッシュを作って、前の結果を一定期間キャッシュするようにしてる。特に一度 success か failure になった結果は永遠にキャッシュされる。-update
や -cached
オプションでキャッシュを強制的に更新したり、絶対に API リクエストをしないようにしたりできる。
プロンプトに表示する
自然にステータスを確認できるように、エンジニアのフロンティアであるシェルのプロンプトにこれを表示したいけれど、プロンプト描画のたびに API アクセスが発生すると使いづらいので、バックグラウンドで通信を行いつつ、プロンプトに表示する内容はキャッシュされたものを使う、という風にしてみてる。こんな感じ。
https://github.com/motemen/dotfiles/blob/3373c12/.zshrc#L174-L177
以上です
motemen/github-commit-status-mark · GitHub
追記
@motemen アイコンは出ないですけど、hubにci-statusってコマンドがあって、それでもいける気がします
— ぎぎにゃん (@giginet) July 1, 2014
@giginet ウオアアアアー!!!
— ジャックナイフのような男 (@motemen) July 1, 2014