我认为如果可以使用Git存储库,运行一些脚本,并让它生成代码库中的行数,以及每个作者所贡献的比例,我会觉得很好。
基本上,因为我是一个有竞争力的编码员,我想要一个个人指标,看看我写的(在当前的HEAD中)行数是否大于我的合作伙伴。说“我写了当前代码库的百分比”这将是一个有趣的统计数据。
有没有人想过这样做?我找了一种方法,但我的shell脚本不是最好的,所以我不能单独做。
答案 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
您也可以根据自己的需要对其进行自定义。