# Copyright (c) 2005 Linus Torvalds
# Copyright (c) 2006 Junio C Hamano
-USAGE='[-a] [-i] [-s] [-v] [--no-verify] [-m <message> | -F <logfile> | (-C|-c) <commit>] [-e] [--author <author>] [<path>...]'
+USAGE='[-a] [-s] [-v] [--no-verify] [-m <message> | -F <logfile> | (-C|-c) <commit>] [-e] [--author <author>] [[-i | -o] <path>...]'
SUBDIRECTORY_OK=Yes
. git-sh-setup
if test -z "$initial_commit"
then
- if test -z "$verbose"
- then
- git-diff-index -M --cached --name-status \
- --diff-filter=MDTCRA HEAD |
- sed -e '
- s/\\/\\\\/g
- s/ /\\ /g
- ' |
- report "Updated but not checked in" "will commit"
- else
- if git-diff-index --cached -M -p --diff-filter=MDTCRA HEAD |
- grep .
- then
- false
- else
- true
- fi
- fi
+ git-diff-index -M --cached --name-status \
+ --diff-filter=MDTCRA HEAD |
+ sed -e '
+ s/\\/\\\\/g
+ s/ /\\ /g
+ ' |
+ report "Updated but not checked in" "will commit"
committable="$?"
else
echo '#
print "$_\n";
}
'
+
+ if test -n "$verbose"
+ then
+ git-diff-index --cached -M -p --diff-filter=MDTCRA HEAD
+ fi
case "$committable" in
0)
echo "nothing to commit"
verbose=
signoff=
force_author=
+only_include_assumed=
while case "$#" in 0) break;; esac
do
case "$1" in
0,)
;;
*,)
- echo >&2 "assuming --include paths..."
- also=t
- # Later when switch the defaults, we will replace them with these:
- # echo >&2 "assuming --only paths..."
- # also=
-
- # If we are going to launch an editor, the message won't be
- # shown without this...
- test -z "$log_given$status_only" && sleep 1
+ only_include_assumed="# Explicit paths specified without -i nor -o; assuming --only paths..."
+ also=
;;
esac
unset only
;;
,t)
save_index &&
+ git-ls-files --error-unmatch -- "$@" >/dev/null || exit
+
git-diff-files --name-only -z -- "$@" |
(
cd "$TOP"
refuse_partial "Different in index and the last commit:
$dirty_in_index"
fi
- commit_only=`git-ls-files -- "$@"`
+ commit_only=`git-ls-files --error-unmatch -- "$@"` || exit
# Build the temporary index and update the real index
# the same way.
fi
{
- test -z "$verbose" || echo '---'
- run_status
+ test -z "$only_include_assumed" || echo "$only_include_assumed"
+ run_status
} >>"$GIT_DIR"/COMMIT_EDITMSG
if [ "$?" != "0" -a ! -f "$GIT_DIR/MERGE_HEAD" ]
then
esac
sed -e '
- /^---$/{
- s///
- q
- }
- /^#/d
+ /^diff --git a\/.*/{
+ s///
+ q
+ }
+ /^#/d
' "$GIT_DIR"/COMMIT_EDITMSG |
git-stripspace >"$GIT_DIR"/COMMIT_MSG
fi
ret="$?"
rm -f "$GIT_DIR/COMMIT_MSG" "$GIT_DIR/COMMIT_EDITMSG"
-git-rerere
+if test -d "$GIT_DIR/rr-cache"
+then
+ git-rerere
+fi
if test -x "$GIT_DIR"/hooks/post-commit && test "$ret" = 0
then