2012-04-20 4 views
7

Gitリポジトリを利用してスクリプトを実行し、コードベースの行数と寄稿した各著者の割合を生成できるのであれば、それに。作者別に現在のコード配布を判断する

基本的に、私は競合するコーダーなので、私が書いた行数(現在のHEAD)が自分のパートナーよりも大きいかどうかを個人的な指標で確認したいと思います。 "私は現在のコードベースの%を書いた"と言うのは面白い統計です。

誰もこれを行うと思ったことはありますか?私は方法を探しましたが、私のシェルスクリプトは最高ではありませんので、私はそれだけではできませんでした。

+5

これまでに聞いたことがあると思います。「コードの行によるプログラミングの進捗状況を測定することは、重量による航空機の建物の進行状況を測定するようなものです。 – Etaoin

+0

@エオイン:私は+1000を欲しいと思っています。 :-) – torek

答えて

1

git-blameの出力を解析することができます。このコマンドは、ファイルの各行を最後に編集した人物を指定します。

この例では、正確に何をしたいではないですが、私はそれはあなたのアイデアを与えると思う:

git blame -e the/file | awk -F '<|>' '{print $2}' | sort | uniq -c 

これは、一緒に彼らはAのために最後に変更された行数と著者の電子メールアドレスを表示しますたとえば、ファイル:

 47 [email protected] 
    34712 [email protected] 

が、それは全体のリポジトリ上で実行するようにするには、あなたがこのような何かを行うことができます。

git ls-files | while read f; do git blame -e $f; done | awk -F '<|>' '{print $2}' | sort | uniq -c 

ここで考えているのは、最初にgit ls-filesを使ってファイルのリストを生成してから、上記のスニペットをそれぞれのファイル(hereというスニペットを使って)で実行することです。これを大規模なコードベースで実行している場合は、パイプを使用するのではなく、中間結果を一時ファイルに保存することができます。

1

おそらくgitdmが必要です。必要なものを正確に実行できます。我々はMaharaプロジェクトのためにそれを使ってcontribution statisticsを生産します。あなたはまた、カスタマイズすることができます

git log -p -M v2.6.19..v2.6.20 | gitdm -u -s -a -o results -h results.html 

:LWN 記事 "誰が2.6.xのを書く" を生成するために使用される典型的なコマンドラインがどのように見える

はまさにREADME示唆してやりますそれはあなた自身の目的のためです。

関連する問題