#!/bin/sh report () { header="# # $1: # ($2) # " trailer="" while read oldmode mode oldsha sha status name newname do echo -n "$header" header="" trailer="# " case "$status" in M ) echo "# modified: $name";; D*) echo "# deleted: $name";; T ) echo "# typechange: $name";; C*) echo "# copied: $name -> $newname";; R*) echo "# renamed: $name -> $newname";; A*) echo "# new file: $name";; U ) echo "# unmerged: $name";; esac done echo -n "$trailer" [ "$header" ] } git-update-cache --refresh >& /dev/null git-diff-cache -M --cached HEAD | sed 's/^://' | report "Updated but not checked in" "will commit" committable="$?" git-diff-files | sed 's/^://' | report "Changed but not updated" "use git-update-cache to mark for commit" if [ "$committable" == "0" ] then echo "nothing to commit" exit 1 fi exit 0