# Copyright (c) 2005 Linus Torvalds
# Copyright (c) 2006 Junio C Hamano
-USAGE='[-a] [-s] [-v] [--no-verify] [-m <message> | -F <logfile> | (-C|-c) <commit> | --amend] [-u] [-e] [--author <author>] [[-i | -o] <path>...]'
+USAGE='[-a | --interactive] [-s] [-v] [--no-verify] [-m <message> | -F <logfile> | (-C|-c) <commit> | --amend] [-u] [-e] [--author <author>] [[-i | -o] <path>...]'
SUBDIRECTORY_OK=Yes
. git-sh-setup
require_work_tree
case "$0" in
*status)
status_only=t
- unmerged_ok_if_status=--unmerged ;;
+ ;;
*commit)
status_only=
- unmerged_ok_if_status= ;;
+ ;;
esac
refuse_partial () {
all=
also=
+interactive=
only=
logfile=
use_commit=
also=t
shift
;;
+ --int|--inte|--inter|--intera|--interac|--interact|--interacti|\
+ --interactiv|--interactive)
+ interactive=t
+ shift
+ ;;
-o|--o|--on|--onl|--only)
only=t
shift
;;
esac
unset only
-case "$all,$also,$#" in
-t,t,*)
- die "Cannot use -a and -i at the same time." ;;
+case "$all,$interactive,$also,$#" in
+*t,*t,*)
+ die "Cannot use -a, --interactive or -i at the same time." ;;
t,,[1-9]*)
die "Paths with -a does not make sense." ;;
-,t,0)
+,t,[1-9]*)
+ die "Paths with --interactive does not make sense." ;;
+,,t,0)
die "No paths with -i does not make sense." ;;
esac
) || exit
;;
,)
+ if test "$interactive" = t; then
+ git add --interactive || exit
+ fi
case "$#" in
0)
;; # commit as-is
# the same way.
if test -z "$initial_commit"
then
- cp "$THIS_INDEX" "$TMP_INDEX"
- GIT_INDEX_FILE="$TMP_INDEX" git-read-tree -m HEAD
+ GIT_INDEX_FILE="$THIS_INDEX" \
+ git-read-tree --index-output="$TMP_INDEX" -i -m HEAD
else
rm -f "$TMP_INDEX"
fi || exit
USE_INDEX="$THIS_INDEX"
fi
-GIT_INDEX_FILE="$USE_INDEX" \
- git-update-index -q $unmerged_ok_if_status --refresh || exit
-
-################################################################
-# If the request is status, just show it and exit.
-
-case "$0" in
-*status)
+case "$status_only" in
+t)
+ # This will silently fail in a read-only repository, which is
+ # what we want.
+ GIT_INDEX_FILE="$USE_INDEX" git-update-index -q --unmerged --refresh
run_status
exit $?
+ ;;
+'')
+ GIT_INDEX_FILE="$USE_INDEX" git-update-index -q --refresh || exit
+ ;;
esac
################################################################
fi
ret="$?"
rm -f "$GIT_DIR/COMMIT_MSG" "$GIT_DIR/COMMIT_EDITMSG" "$GIT_DIR/SQUASH_MSG"
+
+cd_to_toplevel
+
if test -d "$GIT_DIR/rr-cache"
then
git-rerere