您如何知道有多少开发人员参与了使用修订控制系统的项目?我的一个朋友发现了这种在 git log 中查找答案的方法:
git log | grep Author: | sort -u | cut –delimiter=” ” -f2 | sort -u | wc -l
git中有直接的方法吗?Subversion、Bazaar 或 Mercurial 等其他修订控制系统怎么样?
该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
对于 mercurial,有一个扩展可以做到这一点:hg churn
.
hg churn
按行更改排序,如果您想要更改集计数,请使用hg churn -c
.
为了颠覆
svn log -q svn://path/to/repo | cut -f 3 -d " " | sort -u
Bazaar 有一个统计插件,可以获取有关项目贡献者的不同信息:
我也不知道 Mercurial 的直接方法,对其所有文档的良好搜索也没有发现任何东西。所以,这里有一个 *nix 命令,类似于你朋友找到的 Mercurial 命令:
hg log | grep user: | cut -c 14- | sort -u | uniq | wc -l
顺便说一句,我认为 git 的命令有错误,第二个sort -u
肯定应该被 uniq 替换!
Mercurial 内置了强大的模板语言(请参阅 参考资料hg help templates
)。因此,您可以在不启用流失扩展的情况下获取项目中所有人的列表:
hg log --template '{author}\n' | sort -u
如果人们更改了他们的电子邮件地址(但他们的名字保持不变),那么您可以稍微处理一下author
模板关键字:
hg log --template '{author|person}\n' | sort -u
然后根据需要添加wc -l
到上述命令中。
一个更简单的 git 版本是:
git log --pretty=tformat:%an | sort -u | wc -l
或者如果您关心唯一的电子邮件地址:
git log --pretty=tformat:%ae | sort -u | wc -l