10

我认为如果可以获取一个 Git 存储库,运行一些脚本,并让它生成代码库中的行数,以及每个作者对其做出贡献的比例,那将是一个很好的选择。

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

有没有人想过这样做?我一直在寻找一种方法,但我的 shell 脚本不是最好的,所以我无法单独完成。

4

3 回答 3

1

您可以使用 git log,如“哪些 Git 提交统计数据易于拉取”中所示。

或者您可以查看 Git Lookatgit项目,该项目确实检查了更改的行数,如其gitauthor.rbclass所示。

于 2012-04-20T06:10:29.397 回答
1

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

只需按照 README 的建议进行操作:

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

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

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

于 2012-04-20T11:35:25.390 回答
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 生成文件列表,然后在每个文件上运行上述代码段(使用此处提到的代码段)。如果您在大型代码库上运行它,您可能希望将中间结果存储在临时文件中,而不是使用管道。

于 2012-04-20T07:05:57.840 回答