确定作者当前的代码分布

我认为如果可以带一个Git仓库,运行一些脚本,并让它产生代码库中的行数以及每个作者贡献它的比例,那么它会很整洁。

基本上,因为我是一名具有竞争力的编码员,所以我想要一个个人指标来查看我写的(在当前HEAD中)的行数是否大于我的合作伙伴。 说“我写了当前代码库的百分比”是一个有趣的统计数据。

有没有人想过要这样做? 我寻找了一种方法,但我的shell脚本不是最好的,所以我不能单独做。


您可以使用git log,如“哪些Git提交统计信息很容易获取”所示。

或者你可以看看Git Lookatgit项目,它可以检查已更改的行数,如其在gitauthor.rb类中所示。


您可能需要gitdm,它可以完全满足您的需求。 我们将它用于马哈拉项目以产生贡献统计。

只要执行README建议的操作:

用于生成“谁写的2.6.x”LWN文章的典型命令行如下所示:

git log -p -M v2.6.19..v2.6.20 |  gitdm -u -s -a -o results -h results.html

您也可以为自己的目的进行自定义。


你可以尝试解析git-blame的输出。 该命令给出编辑文件每一行的最后一个人。

这个例子并不完全是你想要的,但我认为它给了你这个想法:

git blame -e the/file | awk -F '<|>' '{print $2}' | sort | uniq -c

这将打印作者的电子邮件地址及其最后修改的文件的行数,例如:

     47 foo@bar.com
  34712 blah@baz.com

为了让它在整个存储库上运行,你可以这样做:

git ls-files | while read f; do git blame -e $f; done | awk -F '<|>' '{print $2}' | sort | uniq -c

这里的想法是先用git ls-files生成文件列表,然后在每个文件上运行上面的代码片段(使用这里提到的代码片段)。 如果你在一个大的代码库上运行它,你可能希望将中间结果存储在临时文件中,而不是使用管道。

链接地址: http://www.djcxy.com/p/10695.html

上一篇: Determine current code distribution by author

下一篇: Can wifi and 3G work at the same time on Android?