Git:如何根据添加/更改的代码行来估算某个人对我的项目的贡献?
我有一个GIT仓库,我想计算一段时间内一个人或一组人添加/更改了多less行代码。 可以用git来计算吗?
你可以使用git log
和一些shell-fu:
git log --shortstat --author "Aviv Ben-Yosef" --since "2 weeks ago" --until "1 week ago" \ | grep "files\? changed" \ | awk '{files+=$1; inserted+=$4; deleted+=$6} END \ {print "files changed", files, "lines inserted:", inserted, "lines deleted:", deleted}'
说明: git log --shortstat
显示每个提交的简短统计信息,其中包括显示已更改文件的数量,插入和删除的行数。 然后,我们可以为特定的提交者( – 作者--author "Your Name"
)和时间范围( – --since "2 weeks ago" --until "1 week ago"
)过滤它。
现在,为了实际总结统计数据,而不是看到每个提交的条目,我们做一些shell脚本来做到这一点。 首先,我们使用grep
来过滤只有差异的行。 这些行看起来像这样:
8 files changed, 169 insertions(+), 81 deletions(-)
或这个:
1 file changed, 4 insertions(+), 4 deletions(-)
然后我们使用awk
对它们进行求和:对于每一行,我们添加被改变的文件(第一个单词),插入的行(第四个单词)和删除的行(第六个单词),然后在总结它们之后打印它们。
编辑:正斜杠被添加在顶部的片段,所以它可以复制并粘贴到命令行。
您可以使用Gitstats生成统计信息。 它有一个“作者”部分,其中包括前20位作者添加/删除的行数(排名前20位)。
编辑:也有Git:怪统计
对于特定date,您可以使用 – “2012-08-27” – “2012-09-01”
喜欢
git log –shortstat –author“Fabian”–since“2012-08-27”–until“2012-09-01”| grep“文件改变”| awk'{files + = $ 1; 插入+ = $ 4; 删除+ = $ 6} END {打印“文件已更改”,文件,“插入的行:”,插入,“行删除:”,删除}
检查这个解释
你可以尝试Atlassian的鱼眼/坩埚与Git集成(以及其他代码回购)。 然后,每个人的贡献(包括他们的LOC)都会公开显示在易读的Web应用程序中。 对于小团体来说,它也相当便宜。
开源的信息,让它自己说话。