有多少人参与了一个项目?基于修订控制系统

时间:2009-11-28 20:11:18

标签: svn git mercurial metrics bazaar

您如何知道使用修订控制系统的项目涉及多少开发人员?我的一个朋友发现这种方式在git log中查找答案:

git log | grep Author: | sort -u | cut –delimiter=” ” -f2 | sort -u | wc -l

git中有直接的方式吗?其他版本控制系统如Subversion,Bazaar或Mercurial如何?

7 个答案:

答案 0 :(得分:17)

GIT中

shortlog命令非常有用。这总结了典型的git-log输出。

$ git shortlog -sn
   119  tsaleh
   113  Joe Ferris
    70  Ryan McGeary
    45  Tammer Saleh
    45  Dan Croak
    19  Matt Jankowski
    ...

传递给wc以查看唯一用户名的数量:

$ git shortlog -sn | wc -l
      40

答案 1 :(得分:9)

对于mercurial,有一个扩展可以做到这一点:hg churn

hg churn按行更改排序,如果您想要更改集计数,请使用hg churn -c

答案 2 :(得分:4)

对于颠覆

svn log -q svn://path/to/repo | cut -f 3 -d " "  | sort -u

答案 3 :(得分:2)

Bazaar有stats插件可以获得有关项目贡献者的不同信息:

https://launchpad.net/bzr-stats/

答案 4 :(得分:1)

我也不知道Mercurial的直接方式,并且对其所有文档的良好搜索也没有透露任何内容。所以,这是一个* nix命令,类似于你朋友找到的那个Mercurial:

hg log | grep user: | cut -c 14- | sort -u | uniq | wc -l
顺便说一句,我认为git的命令有错误,第二个sort -u肯定会被uniq取代!

答案 5 :(得分:1)

更简单的git版本是:

git log --pretty=tformat:%an | sort -u | wc -l

或者如果您关心唯一的电子邮件地址:

git log --pretty=tformat:%ae | sort -u | wc -l

答案 6 :(得分:1)

Mercurial内置了强大的模板语言(请参阅hg help templates)。因此,您可以在不启用流失扩展的情况下获取项目中所有人员的列表:

hg log --template '{author}\n' | sort -u

如果有人更改了他们的电子邮件地址(但保持其名称相同),那么您可以稍微处理author模板关键字:

hg log --template '{author|person}\n' | sort -u

然后根据上述命令添加wc -l