cd返回上一 git_git统计代码量脚本
在工作中,我想統計各開發人員,在一定日期范圍內的編碼情況,故有了此腳本。
一、先貼圖,看看效果:
此圖中,用“開發者姓名”代替了實際項目中git的賬號名稱,輸出結果按提交次數倒序輸出。
二、接下來,貼腳本代碼,該腳本是shell腳本,主要用到了git,awk兩個命令:
#!/bin/sh # author:xjf # date: 2020-9-11 # desc: 統計代碼量# git目錄 dir_list="project1 project2"# 創建統計表 commit_file="commit.txt"; if [ -f $commit_file ]; thenrm $commit_file fi touch $commit_file# 循環目錄 for dir in $dir_list doecho "project:$dir"cd $dirif [ $? -eq 0 ]; then# 同步代碼git pull >/dev/null# 統計代碼信息git log --pretty=format:%H,%ai,%an,%s --no-merges --since=$1 --until=$2 --numstat |awk -F, 'BEGIN{hash="";author=""; date="";comment="";}{if (NF>=4) {gsub(/ /,"_",$0);hash=$1; date=substr($2,1,19); author=$3; comment=$4;} else if (NF>0) print hash"t" date "t" author"t" comment "t" $0;}' |awk '{hash[$1] = $1; author[$1] = $3; date[$1] = $2; comment[$1] = $4; file[$1] += 1; add[$1] += $5; del[$1] += $6; fileName[$1] = fileName[$1]","$7} END{for (i in hash) {printf "%s t %s t %s t %s t %d t %d t %d n",hash[i],author[i],comment[i],date[i],add[i],del[i],file[i]}}' >> ../$commit_file;#返回上級目錄cd ..fi done# 輸出結果 echo "-----------------------------------" awk 'BEGIN{printf "開發者t提交次數t新增代碼行數t刪除代碼行數t改動文件數n"}' awk '{author[$2] = $2; commit[$2] += 1; add[$2] += $5; del[$2] += $6; file[$2] += $7;}END{for (i in author){ printf "%st%dt%dt%dt%dn",author[i],commit[i],add[i],del[i],file[i]}}' $commit_file | sort -k 2 -n -r ;以上代碼,有一處需要修改為自己的信息:dir_list修改為自己的項目主目錄名稱,用空格隔開。
三、創建自己的腳本文件:
在自己項目的根目錄里創建可執行文件,如 get_statistic_commit.sh,并給予執行權限(chmod u+x get_statistic_commit.sh),將以上腳本的內容寫到該文件中。
四、執行腳本:
執行腳本時,有兩個參數:起始日期、結束日期,執行的命令如下:
$ ./get_statistic_commit.sh 2020-09-01 2020-09-30
說明:git log命令的參數--since會使用第一個日期參數,本例中為2020-09-01,但由于--since參數統計git代碼時,并不包括指定日期,即2020-09-01當天的代碼并不會統計進來,故起始日期應該寫成前一天的日期。
五、執行環境:
該腳本可在linux環境下執行,前提是需安裝git。也可以在win平臺中執行,前提是安裝git.exe。
本示例中使用的是git.exe:
寫在最后,望各位大佬多多指正、交流,共同學習、進步。
總結
以上是生活随笔為你收集整理的cd返回上一 git_git统计代码量脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7 php程序的调试方法_php程序调试
- 下一篇: php每天扒取当天新闻_php 抓取新浪