#!/usr/bin/env bash project=${PWD##*/} # # list the last modified author for each line # function single_file { while read data do if [[ $(file $data) = *text* ]]; then # git blame --line-porcelain $data 2>/dev/null | grep "author\ " | sed -n 's/^author //p'; fi done } # # list the author for all file # function lines { git ls-files | single_file } # # count the line count # function count { lines | wc -l } # # sort by author modified lines # function authors { lines | sort | uniq -c | sort -rn } # # list as percentage for author modified lines # function result { authors | awk ' { args[NR] = $0; sum += $0 } END { for (i = 1; i <= NR; ++i) { printf " %s, %2.1f%%\n", args[i], 100 * args[i] / sum } } ' | column -t -s, } # summary echo echo " project : $project" echo " lines :" $(count) echo " authors :" result echo