diff --git a/bin/git-line-summary b/bin/git-line-summary new file mode 100755 index 0000000..889b403 --- /dev/null +++ b/bin/git-line-summary @@ -0,0 +1,58 @@ +#!/bin/bash + +project=${PWD##*/} + +# +# list the last modified author for each line +# +function single_file { + while read data + do + git blame --line-porcelain $data | sed -n 's/^author //p' + 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 "%-30s %2.1f%%\n", args[i], 100 * args[i] / sum + } + } + ' +} + +# summary + +echo +echo " project : $project" +echo " lines :" $(count) +echo " authors : " +result +echo +