#!/bin/bash
set -x 
while read oldrev newrev refname; do
  if [ "$oldrev" != "0000000000000000000000000000000000000000" ]; then # sometimes there is no oldrev...
    revspec="$oldrev..$newrev"
  else
    revspec="$newrev" # ...and git chokes on its own invalid null revisions :mad:
  fi
  for merged in $(git rev-list $revspec | /usr/bin/tac); do
    (
      [[ $PWD =~ .*/(.*)\.git ]] # repository name
      echo -n "https://secure.diyhpl.us/cgit/${BASH_REMATCH[1]}/commit/?id="
      [[ $merged =~ ^([0-9a-f]{8}) ]] # abbreviated commit id
      echo -n "${BASH_REMATCH[1]} "
      IFS=$'\n'
      filenames=($(git show --format="format:" --name-only $merged))
      echo -n "${filenames[0]}"
      [ ${#filenames[@]} -gt 1 ] && echo " +$((${#filenames[@]}-1))"
      /usr/bin/git show --format=format:': %an: %s' $merged | /usr/bin/head -n 1
    ) # | /usr/bin/socat STDIO UNIX-CONNECT:/home/gnusha/.irssi/socket
  done
done
