Git statistics對每個人每天代碼量的統計(針對所有分支,所有項目)


#!/usr/bin/env bash

# 項目所有目錄
ITEM_PATH=D:/WorkSpaces/tmp-code/gitTestProjects
# 統計結果輸出文件
curRecordFile=D:/gitCodeStat-`date "+%Y%m"`".log"
TODAY_DATE=`date "+%Y-%m-%d %H:%M:%S"`
# 統計周期長度,默認為1天前的
STAT_DURATION_DAY=1

# 統計代碼
function statCode() {
    git fetch --all
    git pull --all
    # linux: Already up-to-date. win:Already up to date.
    #if test "Already up to date." = "${isUpdate}"
    echo -e "stat git code => $(pwd)"
    # 統計一天內每個開發人員提交的次數,增加的行數,減小的行數與相對增加的行數
    git log --all --format='%aN' --since=${STAT_DURATION_DAY}.day.ago | sort -u | while read name; do echo -en "$TODAY_DATE $1 $name"; \
    git log --all --since=${STAT_DURATION_DAY}.day.ago --author="$name" --pretty=oneline | awk -vsum=0 '{ sum += 1 } END { printf " %s", sum }' -; \
    git log --all --since=${STAT_DURATION_DAY}.day.ago --author="$name" --pretty=tformat: --numstat | awk -vadd=0 -vsubs=0 -vloc=0 '{ add += $1; subs += $2; loc += $1 - $2 } END { printf " %s %s %s \n", add, subs, loc }' -; done  >> $curRecordFile
}

# 遍歷文件夾下的所有項目文件夾
function readDir() {
    echo "current record file name: $curRecordFile"
    echo "date project name commits addLines removeLines oppositeAddLines"
    cd $ITEM_PATH
    for subDir in `ls $ITEM_PATH` ;
    do
        echo "sub dir : $subDir"
        cd $subDir
        echo "current dir: $(pwd)"
        statCode $subDir
        cd ../
    done
    echo "" >> $curRecordFile
}

# 啟動腳本
readDir

代碼解讀:

git log --all --format='%aN' --since=${STAT_DURATION_DAY}.day.ago | sort -u

統計近一段時間內所有分支上操作過的所有作者並去重

git log --all --since=${STAT_DURATION_DAY}.day.ago --author="$name" --pretty=oneline| awk -vsum=0 '{ sum += 1 } END { printf " %s", sum }' -;

統計近一段時間內某作者的提交次數

git log --all --since=${STAT_DURATION_DAY}.day.ago --author="$name" --pretty=tformat: --numstat | awk -vadd=0 -vsubs=0 -vloc=0 '{ add += $1; subs += $2; loc += $1 - $2 } END { printf " %s %s %s \n", add, subs, loc }' -; 

統計近一段時間內某作者的增加代碼的行數,刪除行數及相對增加的行數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM