#!/usr/bin/env bash # # Print lines added/removed and number of commits by author. Optional arg is a # path passed to 'git log'. # script=$(cat << 'EOF' NF == 1 { name = $1; commits[name] += 1 } NF == 3 { plus[name] += $1; minus[name] += $2 } END { for (name in plus) { print name "\t+" plus[name] "\t-" minus[name] "\t" commits[name] } } EOF ) column -t -s $'\t' <( printf $'name\tadded\tremoved\tcommits\n'; git log --numstat --pretty=$'%aN' "$@" \ | awk -F$'\t' "$script" \ | sort --field-separator=$'\t' -k${ASTATS_SORT_COLUMN:-2} -gr )