3

次のようなものを取得するために、git ログでいくつかの統計を行いたいと思います。

10 Daniel Schmidt
5  Peter
1  Klaus

最初の列はコミット数で、2 番目の列はコミッターです。私はすでにこれまでに得ました:

    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リポジトリでは(より高い数値を取得するために頭にパイプされます):

$ 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 に答える