确定作者的当前代码分发

时间:2012-04-20 03:28:23

标签: git

我认为如果可以使用Git存储库,运行一些脚本,并让它生成代码库中的行数,以及每个作者所贡献的比例,我会觉得很好。

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

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

3 个答案:

答案 0 :(得分:1)

您可以使用git log,如“Which Git commit stats are easy to pull”中所示。

或者您可以查看Git Lookatgit项目,该项目会检查更改的行数,如gitauthor.rb class所示。

答案 1 :(得分:1)

您可以尝试解析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生成文件列表,然后在每个文件上运行上面的代码段(使用提到的here代码段)。如果您在大型代码库上运行它,您可能希望将中间结果存储在临时文件中而不是使用管道。

答案 2 :(得分:1)

您可能需要gitdm,它可以完全满足您的需求。我们将它用于Mahara项目以生成contribution statistics

做README建议的事情:

  

用于生成“谁编写2.6.x”LWN的典型命令行   文章看起来像:

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

您也可以根据自己的需要对其进行自定义。