我认为如果可以获取一个 Git 存储库,运行一些脚本,并让它生成代码库中的行数,以及每个作者对其做出贡献的比例,那将是一个很好的选择。
基本上,因为我是一个有竞争力的程序员,我想要一个个人指标来查看我写的行数(在当前的 HEAD 中)是否大于我的合作伙伴。说“我编写了当前代码库的 %”将是一个有趣的统计数据。
有没有人想过这样做?我一直在寻找一种方法,但我的 shell 脚本不是最好的,所以我无法单独完成。
我认为如果可以获取一个 Git 存储库,运行一些脚本,并让它生成代码库中的行数,以及每个作者对其做出贡献的比例,那将是一个很好的选择。
基本上,因为我是一个有竞争力的程序员,我想要一个个人指标来查看我写的行数(在当前的 HEAD 中)是否大于我的合作伙伴。说“我编写了当前代码库的 %”将是一个有趣的统计数据。
有没有人想过这样做?我一直在寻找一种方法,但我的 shell 脚本不是最好的,所以我无法单独完成。
您可以使用 git log,如“哪些 Git 提交统计数据易于拉取”中所示。
或者您可以查看 Git Lookatgit项目,该项目确实检查了更改的行数,如其gitauthor.rb
class所示。
您可以尝试解析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 生成文件列表,然后在每个文件上运行上述代码段(使用此处提到的代码段)。如果您在大型代码库上运行它,您可能希望将中间结果存储在临时文件中,而不是使用管道。