This gist給出了一個可能的解決方案:
git log --shortstat | grep "files changed" | gawk '{files+=$1; inserted+=$4; deleted+=$6} END {print "files changed", files, "lines inserted:", inserted, "lines deleted:", deleted}'
在多行,以提高可讀性:
git log --shortstat | grep "files changed" | \
gawk '{files+=$1; inserted+=$4; deleted+=$6} END \
{print "files changed", files, "lines inserted:", inserted, "lines deleted:", deleted}'
我只是想它的git repo,對提交的10過去的日子(它也適用於Windows):
c:\prgs\vonc\git\git>
git log --oneline --shortstat --since="10 days ago" | grep "files changed" | gawk '{files+=$1; inserted+=$4; deleted+=$6} END {print "files changed", files, "lines inserted:", inserted, "lines deleted:", deleted}'
files changed 47 lines inserted: 397 lines deleted: 30
這同樣的技術(using gawk
)可以讓您彙總等數據,如提交的每個作者的數量:
git log --pretty=format:%an | gawk '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }'| gsort -r
git log --pretty=format:%an | \
gawk '{ ++c[$0]; } END \
{ for(cc in c) printf "%5d %s\n",c[cc],cc; }'| gsort
同樣,在混帳回購協議,在Windows上,它的工作:
c:\prgs\vonc\git\git>
git log --pretty=format:%an --since="10 days ago" | gawk '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }'| gsort
23 Junio C Hamano
8 Jeff King
3 Johannes Schindelin
請注意,它有點矯枉過正,因爲它包含合併提交。
簡單將
c:\prgs\vonc\git\git>
git shortlog -sn --no-merges --since="10 days ago"
8 Jeff King
6 Junio C Hamano
3 Johannes Schindelin
這是相當容易..如果你手頭上有任何的腳本語言;)如果有,是什麼LANGS是可以接受的?我的意思是,你只想總結一下日誌 - 短命,對吧? – quetzalcoatl
是的。所以我可以在我的bash shell中輸入的任何命令都是可以接受的。其實我沒有太多的shell腳本知識 – vedant1811