5

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

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

git中有直接的方法吗?Subversion、Bazaar 或 Mercurial 等其他修订控制系统怎么样?

4

7 回答 7

17

混帐

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
于 2009-11-28T21:18:52.103 回答
9

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

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

于 2009-11-29T00:58:15.627 回答
4

为了颠覆

svn log -q svn://path/to/repo | cut -f 3 -d " "  | sort -u
于 2009-11-28T21:01:51.640 回答
2

Bazaar 有一个统计插件,可以获取有关项目贡献者的不同信息:

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

于 2009-11-29T00:10:18.050 回答
1

我也不知道 Mercurial 的直接方法,对其所有文档的良好搜索也没有发现任何东西。所以,这里有一个 *nix 命令,类似于你朋友找到的 Mercurial 命令:

hg log | grep user: | cut -c 14- | sort -u | uniq | wc -l

顺便说一句,我认为 git 的命令有错误,第二个sort -u肯定应该被 uniq 替换!

于 2009-11-28T20:34:56.060 回答
1

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

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

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

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

然后根据需要添加wc -l到上述命令中。

于 2009-12-05T10:55:52.370 回答
0

一个更简单的 git 版本是:

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

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

git log --pretty=tformat:%ae | sort -u | wc -l
于 2009-11-28T20:55:44.773 回答