2012年1月29日日曜日

[python] bazaarのコミット数をランキングするコマンドを作った。

朝会社に来て、bzr logすると、昨日までなかったコミットが
いっぱい増えていることがある。
そんな時ふと思った。この人一体何件コミットしてるんだろうと。

で、ブランチコミット数のランキングを出力するbzrコマンドを作ってみた。


ソース

#!/usr/bin/python
# coding=utf-8

import os
from bzrlib.branch import Branch
from bzrlib.commands import Command,register_command

version_info = (0, 0, 1, 'dev', 1)
__author__ = 'karino'
__date__   = '2012/01/23'

class cmd_rank(Command):

    def run(self):

        # ブランチオープン
        branch = Branch.open_containing(os.getcwd())[0]
        print branch
        history = branch.revision_history()

        # コミッター毎のコミット数を集計
        ranking = {}
        for log in history:
            committer  = log.split('-')
            #print committer
            if committer[0] in ranking:
                ranking[committer[0]] = ranking[committer[0]]+1
            else:
                ranking[committer[0]] = 1

        commitsum = sum(ranking.values())
        print
        print "%25s %10s %10s"  % ('committer', 'commited', 'rate')
        for k,v in reversed(sorted(ranking.items(), key=lambda x:x[1])):
            rate = v * 100/float(commitsum)
            print "%25s %10s %10s %%"  % (k, v, round(rate,2))

        # 
        print
        return

register_command(cmd_rank)

使い方と結果

例によって、~/.bazaar/plugins/にソースファイルを放り込めば使えるようになります。
使い方は、下記のような感じ。

karino@goldfish:~/bazzar/dev$ bzr rank
BzrBranch7('file:///home/karino//bazzar/dev/')

                committer   commited       rate
                   karubo        863      17.39 %
                   takeda        830      16.73 %
                   maniko        791      15.94 %
                  uemitsu        736      14.83 %
                     sato        706      14.23 %
                 morimomo        263        5.3 %
                    inoda        215       4.33 %
                tatsuhira        183       3.69 %
                   karino         72       1.45 %
                   funami         52       1.05 %
                    nitto         49       0.99 %
                    maito         42       0.85 %
                 higurasu         16       0.32 %
                     mori         16       0.32 %
                matsuhasu          9       0.18 %
                    osuga          3       0.06 %
                    kishi          3       0.06 %
                   tokuma          2       0.04 %
                 sakimoto          1       0.02 %
                      oho          1       0.02 %
最大コミット数863!。
自分の10倍以上だw。

参考になったサイト


bzrlib: bazaarをPythonから操作する

Bazaarの中央ブランチへのpushをHudsonのビルドトリガにしたい

0 件のコメント:

コメントを投稿