我试过以下声明
git blame --line-porcelain file | sed -n' s / ^ author // p' | sort | uniq -c | sort -rn
但是这个语句给出了最新的提交。我需要为特定文件进行每次提交。
请建议!!
答案 0 :(得分:0)
您可以使用此序列
git log --reverse --oneline filename | awk '{ print $1; }'| while read c
do echo "authors for commit $c:"
git blame --line-porcelain filename $c | grep "^author " | sort | uniq -c | sort -nr
done
正如我告诉你的那样:这是一个坐标为(filename, commit, author, number of lines)
的多维事物。首先考虑一下如何显示或存储输出。另请注意,git blame
不是添加行,而是更改了行。因此,如果有人删除了一个包含10k行的文件,他/她将被注意为10k行的更改者,尽管该语句只是rm file
。
更改的行数通常是衡量代码或在某些代码上完成的工作的一个非常糟糕的参数。有时一个作者认为他的代码会花一周然后改变一行,将程序的速度提高1000倍是一个比上周这个家伙更有价值的作者,他写了5000行spagetthi代码。
但这些信息是多余的。更好地使用
git log -p --reverse filename
并学会阅读补丁文件。