| #!/bin/sh | |
| tmp=.git/summary-$$ | |
| trap 'rm -f $tmp-*' 0 | |
| since="$1" | |
| until="$2" | |
| case 0 in | |
| 1) | |
| bottom=$(git rev-parse master@{"$1"}) | |
| top=$(git rev-parse master@{"$2"}) | |
| ;; | |
| 0) | |
| git rev-list --first-parent --since="$since" --until="$until" \ | |
| master >"$tmp-1" && | |
| bottom=$(tail -n 1 "$tmp-1") && | |
| top=$(head -n 1 "$tmp-1") && | |
| rm -f "$tmp-1" | |
| ;; | |
| esac | |
| num_patches=$(git rev-list --no-merges $bottom..$top | wc -l) | |
| git shortlog -s -n --no-merges $bottom..$top >"$tmp-0.txt" | |
| num_contrib=$(wc -l <"$tmp-0.txt") | |
| summary=$(git diff --stat -M $bottom..$top | tail -n 1) | |
| num_files=$(expr "$summary" : ' *\([1-9][0-9]*\) files changed') | |
| num_added=$(expr "$summary" : '.*changed, \([1-9][0-9]*\) insertions') | |
| num_deleted=$(expr "$summary" : '.*, \([1-9][0-9]*\) deletions') | |
| cat <<EOF | |
| During the period of $since .. $until: | |
| Number of contributors : $num_contrib | |
| Number of change sets : $num_patches | |
| Number of changed files : $num_files | |
| Number of added lines : $num_added | |
| Number of deleted lines : $num_deleted | |
| Changes during this period are as follows: | |
| EOF | |
| git --no-pager shortlog -w72,2,4 --no-merges $bottom..$top | |
| git --no-pager diff --dirstat $bottom..$top |