git-status.shon commit Yank writing-back support from gitfakemmap. (f48000f)
   1#!/bin/sh
   2#
   3# Copyright (c) 2005 Linus Torvalds
   4#
   5. git-sh-setup || die "Not a git archive"
   6
   7report () {
   8  header="#
   9# $1:
  10#   ($2)
  11#
  12"
  13  trailer=""
  14  while read oldmode mode oldsha sha status name newname
  15  do
  16    echo -n "$header"
  17    header=""
  18    trailer="#
  19"
  20    case "$status" in
  21    M ) echo "# modified: $name";;
  22    D*) echo "# deleted:  $name";;
  23    T ) echo "# typechange: $name";;
  24    C*) echo "# copied: $name -> $newname";;
  25    R*) echo "# renamed: $name -> $newname";;
  26    A*) echo "# new file: $name";;
  27    U ) echo "# unmerged: $name";;
  28    esac
  29  done
  30  echo -n "$trailer"
  31  [ "$header" ]
  32}
  33
  34branch=$(GIT_DIR="$GIT_DIR" git-symbolic-ref HEAD)
  35case "$branch" in
  36refs/heads/master) ;;
  37*)      echo "# On branch $branch" ;;
  38esac
  39
  40git-update-index -q --unmerged --refresh || exit
  41
  42if GIT_DIR="$GIT_DIR" git-rev-parse --verify HEAD >/dev/null 2>&1
  43then
  44        git-diff-index -M --cached HEAD |
  45        sed -e '
  46                s/^:// 
  47                h
  48                s/^[^\t]*//
  49                s/ /\\ /g
  50                x
  51                s/\t.*$//
  52                G
  53                s/\n/ /' |
  54        report "Updated but not checked in" "will commit"
  55
  56        committable="$?"
  57else
  58        echo '#
  59# Initial commit
  60#'
  61        git-ls-files |
  62        sed -e '
  63                s/ /\\ /g
  64                s/^/o o o o A /' |
  65        report "Updated but not checked in" "will commit"
  66
  67        committable="$?"
  68fi
  69
  70git-diff-files |
  71sed -e '
  72        s/^:// 
  73        h
  74        s/^[^\t]*//
  75        s/ /\\ /g
  76        x
  77        s/\t.*$//
  78        G
  79        s/\n/ /' |
  80report "Changed but not updated" "use git-update-index to mark for commit"
  81
  82if grep -v '^#' "$GIT_DIR/info/exclude" >/dev/null 2>&1
  83then
  84        git-ls-files --others \
  85            --exclude-from="$GIT_DIR/info/exclude" \
  86            --exclude-per-directory=.gitignore |
  87        sed -e '
  88        1i\
  89#\
  90# Ignored files:\
  91#   (use "git add" to add to commit)\
  92#
  93        s/^/#   /
  94        $a\
  95#'
  96fi
  97
  98case "$committable" in
  990)
 100        echo "nothing to commit"
 101        exit 1
 102esac
 103exit 0