【问题标题】:How many people were involved in a project? Based on Revision Control System有多少人参与了一个项目?基于修订控制系统
【发布时间】:2009-11-28 20:11:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: svn git mercurial metrics bazaar


    【解决方案1】:

    混帐

    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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        为了颠覆

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            【解决方案5】:

            我也不知道 Mercurial 的直接方法,并且仔细搜索其所有文档也没有发现任何内容。因此,这里有一个 *nix 命令,类似于您朋友找到的 Mercurial 命令:

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

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

            【讨论】:

            • @Charles Bailey:再看一遍,已经完成了两次! @tonfa:不知道那个,应该更仔细地看看扩展。
            • 我同意,第一个sort -u 在问题中是多余的,但我仍然认为它没有任何问题。但是您还将sort -u 的输出通过管道传输到uniq,所以我想知道您为什么不信任sort -u
            • 哦!我的错不知道 -u 选项!
            【解决方案6】:

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

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

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

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

            然后将wc -l酌情添加到上述命令中。

            【讨论】:

              【解决方案7】:

              一个更简单的 git 版本是:

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

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2011-03-23
                • 2020-05-23
                • 1970-01-01
                • 2010-11-02
                • 1970-01-01
                • 2014-11-17
                • 2019-10-02
                • 1970-01-01
                相关资源
                最近更新 更多