以下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小时内发生了多少更改(无论这些更改是否已进行或什至尚未落实)?
答案 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
计。)