如何计算git存储库中每个提交者的总行数

时间:2018-12-05 03:49:41

标签: git

我想计算一个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 快照中计算出每个提交者的总行数。我不知道该怎么做。

您对此问题有解决方案吗?

2 个答案:

答案 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