我想计算一个git仓库中每个提交者的总行数。我只能在下面找到解决方案:
git log --format='%aN' | sort -u | \
while read name; do
echo -en "$name\t"
git log --author="$name" --pretty=tformat: --numstat | \
awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -
done
它可以计算出每个提交者总行的 所有历史记录 。但是我想在 CURRENT 快照中计算出每个提交者的总行数。我不知道该怎么做。
您对此问题有解决方案吗?
答案 0 :(得分:1)
这有点矫kill过正,而且速度很慢,但是您可以执行以下操作。
git log --format='%aN' | sort -u | \
while read name; do
echo -en "$name\t"
for FILE in $(git ls-files) ; do git blame $FILE | grep "$name" ; done | wc -l
done
答案 1 :(得分:0)
我发现接受的答案很慢,并因GPG签名提交而对我不利。
这有效:
git ls-files | xargs -n1 git blame --line-porcelain | sed -n 's/^author //p' | sort -f | uniq -ic | sort -nr