+ ;;
+ esac
+
+ # If TMP_INDEX is defined, that means we are doing
+ # "--only" partial commit, and that index file is used
+ # to build the tree for the commit. Otherwise, if
+ # NEXT_INDEX exists, that is the index file used to
+ # make the commit. Otherwise we are using as-is commit
+ # so the regular index file is what we use to compare.
+ if test '' != "$TMP_INDEX"
+ then
+ GIT_INDEX_FILE="$TMP_INDEX"
+ export GIT_INDEX_FILE
+ elif test -f "$NEXT_INDEX"
+ then
+ GIT_INDEX_FILE="$NEXT_INDEX"
+ export GIT_INDEX_FILE
+ fi
+
+ case "$branch" in
+ refs/heads/master) ;;
+ *) echo "# On branch $branch" ;;
+ esac
+
+ if test -z "$IS_INITIAL"
+ then
+ git-diff-index -M --cached --name-status \
+ --diff-filter=MDTCRA $REFERENCE |
+ sed -e '
+ s/\\/\\\\/g
+ s/ /\\ /g
+ ' |
+ report "Updated but not checked in" "will commit"
+ committable="$?"
+ else
+ echo '#
+# Initial commit
+#'
+ git-ls-files |
+ sed -e '
+ s/\\/\\\\/g
+ s/ /\\ /g
+ s/^/A /
+ ' |
+ report "Updated but not checked in" "will commit"
+
+ committable="$?"
+ fi
+
+ git-diff-files --name-status |
+ sed -e '
+ s/\\/\\\\/g
+ s/ /\\ /g
+ ' |
+ report "Changed but not updated" \
+ "use git-update-index to mark for commit"
+
+ if test -f "$GIT_DIR/info/exclude"
+ then
+ git-ls-files -z --others --directory \
+ --exclude-from="$GIT_DIR/info/exclude" \
+ --exclude-per-directory=.gitignore
+ else
+ git-ls-files -z --others --directory \
+ --exclude-per-directory=.gitignore
+ fi |
+ perl -e '$/ = "\0";
+ my $shown = 0;
+ while (<>) {
+ chomp;
+ s|\\|\\\\|g;
+ s|\t|\\t|g;
+ s|\n|\\n|g;
+ s/^/# /;
+ if (!$shown) {
+ print "#\n# Untracked files:\n";
+ print "# (use \"git add\" to add to commit)\n";
+ print "#\n";
+ $shown = 1;
+ }
+ print "$_\n";
+ }
+ '
+
+ if test -n "$verbose" -a -z "$IS_INITIAL"
+ then
+ git-diff-index --cached -M -p --diff-filter=MDTCRA $REFERENCE
+ fi
+ case "$committable" in
+ 0)
+ case "$amend" in
+ t)
+ echo "# No changes" ;;
+ *)
+ echo "nothing to commit" ;;
+ esac
+ exit 1 ;;
+ esac
+ exit 0
+ )