git-status-scripton commit git-rev-list: use proper lazy reachability analysis (8906300)
   1#!/bin/sh
   2report () {
   3  header="#
   4# $1:
   5#   ($2)
   6#
   7"
   8  trailer=""
   9  while read oldmode mode oldsha sha status name newname
  10  do
  11    echo -n "$header"
  12    header=""
  13    trailer="#
  14"
  15    case "$status" in
  16    M ) echo "# modified: $name";;
  17    D*) echo "# deleted:  $name";;
  18    T ) echo "# typechange: $name";;
  19    C*) echo "# copied: $name -> $newname";;
  20    R*) echo "# renamed: $name -> $newname";;
  21    N*) echo "# new file: $name";;
  22    U ) echo "# unmerged: $name";;
  23    esac
  24  done
  25  echo -n "$trailer"
  26  [ "$header" ]
  27}
  28
  29git-update-cache --refresh >& /dev/null
  30git-diff-cache -B -C --cached HEAD | sed 's/^://' | report "Updated but not checked in" "will commit"
  31committable="$?"
  32git-diff-files | sed 's/^://' | report "Changed but not updated" "use git-update-cache to mark for commit"
  33if [ "$committable" == "0" ]
  34then
  35        echo "nothing to commit"
  36        exit 1
  37fi
  38exit 0