分类统计git代码行
#git log --since='2017/1/1' --until='2018/1/1' --pretty=tformat: --numstat |awk -F "." '{print($1" "$NF"\n")}'|awk -F " " '{add[$NF]+=$1;remove[$NF]+=$2}END{for(i in add){if(add[i]!=0&&remove[i]!=0){printf "file:%s added lines: %s removed lines : %s total lines: %s\n",i,add[i],remove[i],add[i]-remove[i]}}}'
统计每次提交新增/删除行在3000以下的行数
#git log --since='2018/1/1' --until='2018/12/31' --pretty=tformat: --shortstat | gawk '{if($4<3000&&$6<3000){ if($5=="insertion(+)"||$5=="insertion(+),"||$5=="insertions(+)"||$5=="insertions(+),"){add += $4 ;}if($5=="deletion(-)"||$5=="deletion(-),"||$5=="deletions(-)"||$5=="deletions(-),"){subs += $4 ;} if($7=="deletion(-)"||$7=="deletion(-),"||$7=="deletions(-)"||$7=="deletions(-),"){subs += $6 ;}}} END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,add-subs }'
统计每个作者代码量
#git log --stat |awk 'BEGIN{authorname="null"}{if($1=="Author:"){authorname=$2;}if($5=="insertions(+)"||$5=="insertions(+),"){author[authorname]+=$4;}}END{for(a in author){print(a, author[a]);}}'