Reputation: 37
I want to count up total lines of every committer in a git repository. I only get a solution below:
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
It can calculate out ALL HISTORY of every committer's total lines. But I want to calculate out in CURRENT snapshot, every committer's total lines. I don't know how to do it.
Do you have a solution about this problem?
Upvotes: 2
Views: 331
Reputation: 19414
I found the accepted answer slow and broke for me with GPG signed commits.
This worked:
git ls-files | xargs -n1 git blame --line-porcelain | sed -n 's/^author //p' | sort -f | uniq -ic | sort -nr
Upvotes: 0
Reputation: 12109
This is a bit overkill and slow but you can do something like this.
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
Upvotes: 2