【问题标题】:Git log stats with regular expressions带有正则表达式的 Git 日志统计信息
【发布时间】:2012-09-07 21:33:50
【问题描述】:

我想在我的 git 日志上做一些统计,以得到类似的东西:

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(或其他管道)中,它不会得到正确的输出。

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

非常感谢您的帮助!

【问题讨论】:

  • 您将log 传递给grep 而不仅仅是使用git shortlog -n -s 的任何特殊原因?

标签: regex git bash git-log


【解决方案1】:

谷歌git-extras。它有一个 git summary 可以做到这一点。

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 2014-02-03
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多