開発に入ると、あとから「あれ、時間どれくらいかかったっけ」みたいになることありませんか。
自分はしょっちゅうありまして、Togglを使うようにしたものの、開始/終了忘れが続出。
作業を変更するタイミングで勝手にどこかに記録されていった方が良いなーと思って、開発中は何度も行うブランチの切り替えをタイミングにしてみることにしました。
checkoutのタイミング
「はて、checkoutのタイミングってどうやって知るんだろう」
ちょろっと調べるとすぐに出てきました。
git checkout
が正常に終了すると、post-checkout
フックが実行されます。
8.3 Git のカスタマイズ - Git フック#その他のクライアントフック
.git/hooks
の中にはいくつかサンプルがあります。
その中にpost-checkout
ファイルを作って処理を書いておくとcheckout後に実行されるらしいので、これを利用することにします。
ブランチ名の取得
「はて、ブランチ名ってどうやって取得するんだろう」
これもちょっと調べると出てきました。
git rev-parse --abbrev-ref HEAD
でできるらしい。rev-parse
初めて知りました。
gitで現在のブランチ名を取得する - 技術は熱いうちに打て!
後から調べたのですが、Git1.8以降であればgit symbolic-ref --short HEAD
でも取得できるようです。
Gitリポジトリのカレントブランチ名を取得する | blog: takahiro okumura
現在のブランチ名がgit rev-parse --abbrev-ref HEAD
なら、一つ前はgit rev-parse --abbrev-ref @{-1}
かな?と思って試したら、ちゃんと前のブランチ名を取得できました。
ということで、
# 現在のブランチ名を取得 $ git rev-parse --abbrev-ref HEAD master # 前のブランチ名を取得 $ git rev-parse --abbrev-ref @{-1} develop
git rev-parse
なかなか面白い。
git rev-parseを使いこなす - Qiita
最終的に
↓のように着地。
Slackへの通知は[10分で出来る]シェルスクリプトの結果をslackに投稿 - Qiitaを参考にしています。
実際にmaster -> developへブランチを変更すると…
キタ(゚∀゚)!
名前(gittn)やメッセージは整えるとして、とりあえず通知するところまでは完了。
これでSlack上で切り替えた時間がわかるので、大まかにでも作業時間がわかる(はず)。
curl叩いている分、checkoutが若干遅くなってしまったのは…どうしよう…。