组织映射和 Reviewed-by 统计,使用 git

loic

shortlog 方便地打印贡献者排行榜。例如,要显示 Ceph 在过去一年中的前十名提交者

$ git shortlog --since='1 year' --no-merges -nes | nl | head -10 1 1890 Sage Weil sage@inktank.com 2 805 Danny Al-Gaaf danny.al-gaaf@bisect.de 3 491 Samuel Just sam.just@inktank.com 4 462 Yehuda Sadeh yehuda@inktank.com 5 443 John Wilkins john.wilkins@inktank.com 6 303 Greg Farnum greg@inktank.com 7 288 Dan Mick dan.mick@inktank.com 8 274 Loic Dachary loic@dachary.org 9 219 Yan, Zheng zheng.z.yan@intel.com 10 214 João Eduardo Luís joao.luis@inktank.com

要获得过去一年审阅者的相同输出,假设 commit 消息中一致地设置了 Reviewed-by,可以使用以下命令

git log --since='1 year' --pretty=%b | \ perl -n -e 'print "$_\n" if(s/^\s*Reviewed-by:\s*(.*<.*>)\s*$/\1/)' | \ git check-mailmap --stdin | \ sort | uniq -c | sort -rn | nl | head -10 1 652 Sage Weil sage@inktank.com 2 265 Greg Farnum greg@inktank.com 3 185 Samuel Just sam.just@inktank.com 4 106 Josh Durgin josh.durgin@inktank.com 5 95 João Eduardo Luís joao.luis@inktank.com 6 95 Dan Mick dan.mick@inktank.com 7 69 Yehuda Sadeh yehuda@inktank.com 8 46 David Zafman david.zafman@inktank.com 9 36 Loic Dachary loic@dachary.org 10 21 Gary Lowell gary.lowell@inktank.com

commit 消息的主体(–pretty=%b)显示来自过去一年的 commit(–since=’1 year’)。perl 读取并仅在找到 Reviewed-by: 字符串后,后跟看起来像 First Last mail@dot.com^\s*Reviewed-by:\s*(.*<.*>)\s*$)时才打印任何内容。找到的作者会被重新映射以修复拼写错误(git check-mailmap –stdin)。
可以使用 .organizationmap 文件进一步将作者重新映射到他们所属的组织,该文件具有与 .mailmap 文件相同的格式,只是将规范化的作者名称重新映射到使用 git -c mailmap.file=.organizationmap check-mailmap –stdin 的组织名称

git log --since='1 year' --pretty=%b | \ perl -n -e 'print "$_\n" if(s/^\s*Reviewed-by:\s*(.*<.*>)\s*$/\1/)' | \ git check-mailmap --stdin | \ git -c mailmap.file=.organizationmap check-mailmap --stdin | \ sort | uniq -c | sort -rn | nl | head -10 1 1572 Inktank contact@inktank.com 2 39 Cloudwatt libre.licensing@cloudwatt.com 3 7 Intel contact@intel.com 4 4 University of California, Santa Cruz contact@cs.ucsc.edu 5 4 Roald van Loon Consultancy roald@roaldvanloon.nl 6 2 CERN contact@cern.ch 7 1 SUSE contact@suse.com 8 1 Mark Kirkwood mark.kirkwood@catalyst.net.nz 9 1 IWeb contact@iweb.com 10 1 Gaudenz Steinlin gaudenz@debian.org