Scala座によく参加をしてくださる@mironalさんがGitのサブコマンド、Git-countを作ったそうなので使ってみた。
使い方
Macの場合はHomebrewでインストールができるので、次のコマンドで行けるようです。
brew tap neethouse/neet
brew install git-count
Gitで管理しているファイルを正規表現で指定すると、誰がどれだけコミットをしたか表示されるそうです。
今一番アツいプロジェクトnuma08/numa08で試してみました。
git count ./
35 files found. numa08 10317 funnelbit 9 mktakuya 0 Total 10326
以前id:funnelbitにSNS関連のCSSを書いてもらったのでその分がカウントされてますね。あと、id:mktakuyaさんに誤字を修正してもらったことがあるので、コミッターに含まれてますね。
カウントが0になってるのは、たぶんその修正分は俺が更に修正をしたからだと思います・・・。ごめんね、mkさん。またプルリク頂戴ね。
ハック
@STAR_ZERO 定期的に走らせてグラフにしたりしたいんですよね〜 なんか簡単に出来る方法が欲しい
— みろなる (@mironal) 2013, 12月 18
グラフにしたいってニーズに答えるため、Google Chart APIを使って縦線のグラフを作るワンライナーを書いてみた。
wget -O chart.png $(printf "http://chart.apis.google.com/chart?cht=bvs&chs=100x50&chd=t:%s" $(git count ./ | awk -v ORS="" 'NR>1&&/^[a-zA-Z0-9]/{print $2","}') | awk '{sub(/.$/, "", $1); print $1}')
awkを2回も使ってしまっているのが残念。まあとりあえずこれで、png形式で画像の取得ができますよ。
ワンライナーを書いて思った
最初はawkで行ごとに処理をしてパイプでprintfに渡すのかなー?と思ってたけど、うまくやる方法がわからなかった。awkとwhileを活用して配列(的なもの)を作ってパイプで渡すことができればいいんだけど、シェルスクリプトだと難しそうだった。
Scalaなら簡単にできそうだと思いました。
Git-countについて
Gitのサブコマンドってわりとお手軽に自作できることを知った。これは収穫。
awk芸で色々と遊べそうな感じがしましたよ。