2012-04-20 18 views
7

我認爲如果可以採用Git存儲庫,運行某個腳本並使其生成代碼庫中的行數以及每個貢獻者的比例到它。根據作者確定當前代碼分佈

基本上,因爲我是一個有競爭力的編碼員,我想要一個個人指標來查看我寫的行數(在當前HEAD中)是否大於我的合作伙伴。說「我寫了當前代碼庫的百分比」是一個有趣的統計數據。

有沒有人想過要這樣做?我尋找了一種方法,但我的shell腳本不是最好的,所以我不能單獨做。

+5

我確定你以前聽過這個:「通過代碼行來測量編程進度就像衡量飛機建築物重量的進度。」 – Etaoin 2012-04-20 05:10:51

+0

@Etaoin:希望我能+1000。 :-) – torek 2012-04-20 06:12:43

回答

1

您可以嘗試解析git-blame的輸出。該命令給出編輯文件每一行的最後一個人。

這個例子是不是你想要什麼,但我認爲它給你的想法:

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

這將帶着他們最後修改的行數打印作者的電子郵件地址一起文件,例如:

 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,它可以做到你所需要的。我們將其用於馬哈拉項目以生產contribution statistics

就做什麼README提示:

用來生成 「誰寫的2.6.x」 LWN 文章的典型命令行是這樣的:

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

您還可以自定義它爲你自己的目的。