3

我想在我的 git log 上做一些统计数据,以获得类似:

10 Daniel Schmidt
5  Peter
1  Klaus

第一列是提交计数,第二列是提交者。我已经做到了这一点:

    git log --raw |
    grep "^Author: " |
    sort |
    uniq -c |
    sort -nr |
    less -FXRS

有趣的部分是

    grep "^Author: "

我想用一个很好的正则表达式进行修改以排除邮件地址。使用 Rubular 之类的http://rubular.com/r/mEzP2hFjGb可以工作,但如果我将它插入 grep (或通过管道插入的另一个),它不会让我得到正确的输出。

附带问题:在保持这种管道命令样式的同时,是否有可能让计数和作者被其他东西隔开,然后是空格?我希望稍后在我们的专栏之间有一个更好的分隔符(也许还有一些颜色^^)

非常感谢你的帮助!

4

3 回答 3

5

谷歌git-extras。它有一个git summary这样做的。

于 2012-09-07T21:45:21.347 回答
1

git shortlog -n -s为您提供相同的数据。例如,在 git 存储库上(通过管道传送到 head 以获得更高的数字):

$ git shortlog -n -s | head -4
 11129  Junio C Hamano
  1395  Shawn O. Pearce
  1103  Linus Torvalds
   896  Jeff King

要获得不同的分隔符,您可以将其通过管道传输到awk

$ git shortlog -n -s | awk 'BEGIN{OFS="|";} { $1=$1; print $0 }' | head -4
 11129|Junio|C|Hamano
  1395|Shawn|O.|Pearce
  1103|Linus|Torvalds
   896|Jeff|King
于 2012-09-08T02:08:09.873 回答
0

您可以使用 perl 单线获得 pcre 的全部功能(应该与您使用 Rebular 的实验相匹配):

perl -ane 'print if /^Author: /'

只需根据需要扩展该模式。

要重新格式化,您可以使用awk(例如awk '{printf "%5d\t%s", $1, $2}'

于 2012-09-07T21:51:43.583 回答