给定一系列提交,比如HEAD~1
and HEAD
(即, just HEAD
),我想找到在该范围内更改的行的先前作者以及他们更改了多少行。
更准确地说:对于范围内更改的每一行,我想获取以前的作者(git blame
例如,使用 )。然后我想按这些作者总结更改的行进行分组。
例如,考虑这些人之前更改的文件 X HEAD
(我在行首标记了更改行的人,与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.
所以 Carl 改了 Bob 的 2 行,删除了 Bob 的 1 行,改了 Adam 的 1 行。因此,我的脚本的输出应该是:
鲍勃:3 亚当:1
我的整体解决方案是:
- 查找更改的行范围
- 将这些范围与
-L
参数一起传递git blame
给以查询以前的作者 - 通过解析
git blame
s 输出并总结自己进行最后的分组。
我目前正在努力解决 1.: 获取由 diff 更改的行范围(在本例中为一个范围 3,6)。一旦我有了这些范围,我可以将它们传递给git blame -L
这些行的以前的作者。那么如何使git diff
或其他 git 工具将行范围作为数字start,end
对返回?