给定一系列的提交,比如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
对?