GitStat

Download the latest revision (0.18)

Gitstat is a parser around git log to collect information about all of the commits by a person or group. It uses a very simple substring comparison against the email address found in the git Author, signed-off-by, acked-by, tested-by and reported-by tags.

Sample outputs

gitstat 2.6.30-rc1..v2.6.30-rc2

gitstat 2.6.30-rc1..v2.30-rc2 -N -i

Usage:

The full list of command line options is found in gitstat -h, but the most important option is '-e email'. Give it once for each email address you want to search for. Example:

gitstat -e chris.mason@oracle.com  v2.6.29..v2.6.30-rc1
Will show all of the commits from Chris Mason from 2.6.29 to 2.6.30-rc1.

gitstat -e oracle.com -e intel.com v2.6.29..v2.6.30-rc1
Will show all of the commits from any Oracle email address and any intel email address

gitstat v2.6.29..v2.6.30-rc1
Will show all of the commits from all of the authors.

gitstat -e oracle.com -o v2.6.29..v2.6.30-rc1
Will include a report of other commits each oracle.com person was involved with. This includes the Signed-off-by and other tags.

gitstat will pass any non-option arguments to git log, as well as anything after a '--' on the command line. In the examples above v2.6.29..v2.6.30-rc1 were passed directly to git log and not processed by gitstat. gitstat knows the following options.

gitstat -o prints an extra report of commits each person was involved with via Signed-off-by, Acked-by or Tested-by tags.

gitstat -d prints a diffstat for all of the commits there were authored by the selected email addresses.

gitstat -f prints the full name and email address for each person.

gitstat -n suppresses the per-commit line count.

gitstat -r "header" adds a header to the top of the report.

gitstat -s "date range" passes "date range" to the git log --since argument. Example: gitstat -s "2 weeks ago"

gitstat -p Reads the git log output from stdin instead of starting git log for you. This allows you to pass more complex arguments to git log. The default args used by gitstat are "-M --no-merges -p".

gitstat -i Sorts output by the length of the lines.

gitstat -C Sorts output by the commit size

gitstat -S Don't group output by the first word of the summary.

gitstat -N Sort authors by number of commits.

gitstat -c Print the full text commit text for each commit.

gitstat -l num Limit the commits printed for each person to num

gitstat -e email adds an email address to the list we are searching for. This option can be given multiple times. If it is not given at all, we print all the commits found.

gitstat -E email_file reads email_file and pulls the names of the people we want, one per line. The names are all turned into lower case, and only the name is used (not the email address)