ナンクル力学系 home

MercurialやGitのコミット頻度などを可視化するPythonスクリプトを書いてみた

いくつかのオープンソースなソフトがあった時は,開発が活発なほうを選びたい. Google Code とかだと activity を出してくれてりするけど,

  1. 同じ activity の測り方で比較したい.

  2. そもそも activity 表示してくれてないサイトだと比較できない.

  3. 今は盛り上がってるよ,じゃなくて継続的に盛り上がってるか知りたい.

などなど問題があるので,自力でやってみた.

その出力が↓にあるNumpyのリポジトリの activity (一日あたりのコミット数)の推移. 2006年あたりから盛り上がってるねーということが分かる.

repo-act-numpy by takafumi_a, on Flickr

ちなみに時刻が並んでいるデータ(点過程って言えば正確かな?)だったら何でもパイプ経由で食わせられるので,他の用途にも使えるはず.

今回使うスクリプト(datehist.py)は tkf’s gist: 913543 — Gist からダウンロード出来ます. このポストの一番下にも載っけてあります.Numpyとmatplotlibが必要です.

使い方

Activity を測りたいリポジトリのワーキングディレクトリで,以下を実行. MercurialやGit以外の方法は使ってないので知らない…:

hg log --template '{date}\\n' | datehist.py
git log --format='%at' | datehist.py

datehist.py に食わす標準入力 (hg loggit log の出力)はこんな感じ. コミットがあった時間の unix time を一行ごとにひたすら吐いてくれる.:

1298586880
1298516219
1298426531
1298426393
1298418897
1298407083
1298387222
1298387170
1295910432
(...以下略)

引数 -t (省略可)で出力グラフのタイトルを与えられるので,ワーキングディレクトリのあるフルパスをタイトルに使いたければ

hg log --template '{date}\\n' | datehist.py -t `hg root`
git log --format='%at' | datehist.py -t `git rev-parse --show-toplevel`

でOK.

応用例: 分散バグ管理システムはどれが元気あるかを調べてみた

比較したのは,次の4つのプロジェクト

  1. b (Mercurialのプラグイン)
  2. Bugs Everywhere (Python製)
  3. Ditz (Ruby製)
  4. pitz (DitzをPythonで書き直し)

screenshot-2011-04-04-185810 by takafumi_a, on Flickr

結論: どれもあんまり元気ないなあ…

とりあえず,もろもろの理由から b を使ってみることにした.

datehist.py の 改善点

この方法だと,いちいちローカルに clone 作る必要があるのが難点. リモートのリポジトリのログを見る方法って探せばありそう(←探せ)だし, そうすればwebアプリ的な感じにも出きるよね. 誰かやってくれないかなあ(ぉぃ

datehist.py

何か変更あれば,最新版は tkf’s gist: 913543 — Gist にあげときます.

blog comments powered by Disqus