給定一系列的提交,比如HEAD~1
和HEAD
(即只是HEAD
),我想查找以前的那些在那個範圍內被改變的行的作者以及他們改變了多少行。如何查找git中所有更改行的以前作者?
更確切地說:對於範圍內已更改的每一行,我想獲取以前的作者(例如使用git blame
)。然後,我想由這些作者分組,總結變化的線條。
例如,考慮由這些人之前HEAD
更改的文件X(我標誌着改線在該行開頭的人,堪比git blame
的輸出):
Adam: Lorem ipsum dolor
Adam: sit amet, consectetur
Adam: adipiscing elit.
Bob: Praesent efficitur urna
Bob: ac volutpat lacinia.
Bob: Sed sagittis, metus non
Adam: maximus tristique, leo
Adam: augue venenatis enim,
Adam: ac rutrum nulla odio
Adam: id urna.
現在,筆者Carl
改變如下文件(注意,這是一個git blame
混合僞代碼和git diff
):
Adam: Lorem ipsum dolor
Adam: sit amet, consectetur
- Adam: adipiscing elit.
+ Carl: adipiscing elit I love cats.
- Bob: Praesent efficitur urna
+ Carl: Praesent efficitur urna :D
- Bob: ac volutpat lacinia.
+ Carl: ac volutpat lacinia YOLO.
+ Carl: Added extra line, lol!
- Bob: Sed sagittis, metus non
Adam: maximus tristique, leo
Adam: augue venenatis enim,
Adam: ac rutrum nulla odio
Adam: id urna.
所以卡爾改變2號線從鮑勃,刪除一行從鮑勃,並從亞當改變一行。因此,我的腳本的輸出應該是:
鮑勃:3 亞當:1級
我的整體的解決方案是:
- 找到改變的線範圍
- 通過這些範圍與
-L
參數git blame
來查詢以前的作者 - 通過解析
git blame
的輸出和總結我自己做最後的分組。
我目前正在努力爭取1:得到差異更改的行範圍(在這種情況下一個範圍3,6)。一旦我有這些範圍,我可以將它們傳遞給git blame -L
以獲得這些行的以前的作者。 那麼我怎樣才能讓git diff
或其他的git工具返回線性範圍爲數字start,end
對?