2013-11-26 29 views
2

前段時間,我寫了/偷了一個腳本,以找出Git倉庫中某個特定文件的當前「所有者」。Git:如何獲取用戶列表以及他們寫了多少行代碼

#!/bin/bash 
git blame --line-porcelain "[email protected]" | sed -n 's/^author //p' | sort | uniq -c | sort -rn 

它示出了從git blame的結果和由多少行每個用戶已修改進行排序。

結果看起來是這樣的:

125 Joe 
    16 Fred 
    16 Alice 
    7 Jane 
    4 Bob 

我的問題是,我怎麼能修改此腳本以遞歸在整個回購,而不是一個單一的文件?

+0

根據我的經驗,目前的「所有者」通常是維護者,他們與原作者相比編輯不多。如果喬離開公司,弗雷德可能是真正的主人。 –

+0

我絕對同意。這些數字本身並不代表誰目前正在維護該文件,但是確定誰可能知道是一個好的開始。 – Brad

回答

5

您可以使用git ls-tree列出Git中的所有文件。

以下是您的腳本所做的工作,但不包括master分支上的所有文件。

git ls-tree -r master --name-only | xargs -I {} git blame --line-porcelain {} | sed -n 's/^author //p' | sort | uniq -c | sort -rn 
+1

這真的很好! ls-tree命令非常有用:)作爲一個非註釋,當你必須在每個xargs命令中定義-I {}時,Mac xargs是多麼令人討厭! – Brad

+1

...和Mac sed -i,以及... – Daniel

+0

@Brad,Daniel你是什麼意思?我得到「sed:RE錯誤:非法字節序列」。它與你和布拉德的評論有什麼關係? – Seirddriezel

相關問題