使用git计算24小时内提交的+未分段的LOC变化

时间:2019-02-07 03:26:39

标签: git

以下bash脚本可以计算过去24小时内git repo中的LOC更改:

loc_changed() {
    since=${1:-24 hours}
    author=${2:-your_email@gmail.com}
    git log --numstat --pretty="%H" --author="$author" --since="$since" | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("(+%d, -%d) LOC\n", plus, minus)}'
}

问题::此命令排除未暂存的 LOC更改。我认为向此LOC计数添加未分段的更改将很有用。如何做到这一点?

基本上,我要实现的目标是:给定一个回购协议,过去24小时内发生了多少更改(无论这些更改是否已进行或什至尚未落实)?

1 个答案:

答案 0 :(得分:1)

尝试这些更改。我确定这段代码可以优化:)

loc_changed() {

    since=${1:-24 hours}
    author=${2:-your_email@gmail.com}

    stagedPlus=$(git log --numstat --pretty="%H" --author="$author" --since="$since" | awk 'NF==3 {plus+=$1} END {print plus}') 

    unstagedPlus=$(git diff  $(git log -1 --pretty="%H" | tail -1) --numstat | awk 'NF==3 {plus+=$1} END {print plus}')

    stagedMinus=$(git log --numstat --pretty="%H" --author="$author" --since="$since" | awk 'NF==3 {minus+=$2} END {print minus}') 

    unstagedMinus=$(git diff  $(git log -1 --pretty="%H" | tail -1) --numstat | awk 'NF==3 {minus+=$2} END {print minus}')

    if [[ -z $unstagedPlus ]]; then
        unstagedPlus=0
    fi
    if [[ -z $unstagedMinus ]]; then
        unstagedMinus=0
    fi

    print "+$(($stagedPlus+$unstagedPlus)), -$(($stagedMinus+$unstagedMinus))"
}

您需要的行与diff相关,在这里我得到从上次提交到当前未暂存代码的所有更改(以numstat计。)