@ -41,21 +41,21 @@ run_status () {
# so the regular index file is what we use to compare.
# so the regular index file is what we use to compare.
if test '' != "$TMP_INDEX"
if test '' != "$TMP_INDEX"
then
then
GIT_INDEX_FILE="$TMP_INDEX"
GIT_INDEX_FILE="$TMP_INDEX"
export GIT_INDEX_FILE
export GIT_INDEX_FILE
elif test -f "$NEXT_INDEX"
elif test -f "$NEXT_INDEX"
then
then
GIT_INDEX_FILE="$NEXT_INDEX"
GIT_INDEX_FILE="$NEXT_INDEX"
export GIT_INDEX_FILE
export GIT_INDEX_FILE
fi
fi
case "$status_only" in
case "$status_only" in
t) color= ;;
t) color= ;;
*) color=--nocolor ;;
*) color=--nocolor ;;
esac
esac
git-runstatus ${color} \
git-runstatus ${color} \
${verbose:+--verbose} \
${verbose:+--verbose} \
${amend:+--amend} \
${amend:+--amend} \
${untracked_files:+--untracked}
${untracked_files:+--untracked}
}
}
@ -87,179 +87,181 @@ only_include_assumed=
untracked_files=
untracked_files=
while case "$#" in 0) break;; esac
while case "$#" in 0) break;; esac
do
do
case "$1" in
case "$1" in
-F|--F|-f|--f|--fi|--fil|--file)
-F|--F|-f|--f|--fi|--fil|--file)
case "$#" in 1) usage ;; esac
case "$#" in 1) usage ;; esac
shift
shift
no_edit=t
no_edit=t
log_given=t$log_given
log_given=t$log_given
logfile="$1"
logfile="$1"
shift
shift
;;
;;
-F*|-f*)
-F*|-f*)
no_edit=t
no_edit=t
log_given=t$log_given
log_given=t$log_given
logfile=`expr "z$1" : 'z-[Ff]\(.*\)'`
logfile=`expr "z$1" : 'z-[Ff]\(.*\)'`
shift
shift
;;
;;
--F=*|--f=*|--fi=*|--fil=*|--file=*)
--F=*|--f=*|--fi=*|--fil=*|--file=*)
no_edit=t
no_edit=t
log_given=t$log_given
log_given=t$log_given
logfile=`expr "z$1" : 'z-[^=]*=\(.*\)'`
logfile=`expr "z$1" : 'z-[^=]*=\(.*\)'`
shift
shift
;;
;;
-a|--a|--al|--all)
-a|--a|--al|--all)
all=t
all=t
shift
shift
;;
;;
--au=*|--aut=*|--auth=*|--autho=*|--author=*)
--au=*|--aut=*|--auth=*|--autho=*|--author=*)
force_author=`expr "z$1" : 'z-[^=]*=\(.*\)'`
force_author=`expr "z$1" : 'z-[^=]*=\(.*\)'`
shift
shift
;;
;;
--au|--aut|--auth|--autho|--author)
--au|--aut|--auth|--autho|--author)
case "$#" in 1) usage ;; esac
case "$#" in 1) usage ;; esac
shift
shift
force_author="$1"
force_author="$1"
shift
shift
;;
;;
-e|--e|--ed|--edi|--edit)
-e|--e|--ed|--edi|--edit)
edit_flag=t
edit_flag=t
shift
shift
;;
;;
-i|--i|--in|--inc|--incl|--inclu|--includ|--include)
-i|--i|--in|--inc|--incl|--inclu|--includ|--include)
also=t
also=t
shift
shift
;;
;;
-o|--o|--on|--onl|--only)
-o|--o|--on|--onl|--only)
only=t
only=t
shift
shift
;;
;;
-m|--m|--me|--mes|--mess|--messa|--messag|--message)
-m|--m|--me|--mes|--mess|--messa|--messag|--message)
case "$#" in 1) usage ;; esac
case "$#" in 1) usage ;; esac
shift
shift
log_given=m$log_given
log_given=m$log_given
if test "$log_message" = ''
if test "$log_message" = ''
then
then
log_message="$1"
log_message="$1"
else
else
log_message="$log_message
log_message="$log_message
$1"
$1"
fi
fi
no_edit=t
no_edit=t
shift
shift
;;
;;
-m*)
-m*)
log_given=m$log_given
log_given=m$log_given
if test "$log_message" = ''
if test "$log_message" = ''
then
then
log_message=`expr "z$1" : 'z-m\(.*\)'`
log_message=`expr "z$1" : 'z-m\(.*\)'`
else
else
log_message="$log_message
log_message="$log_message
`expr "z$1" : 'z-m\(.*\)'`"
`expr "z$1" : 'z-m\(.*\)'`"
fi
fi
no_edit=t
no_edit=t
shift
shift
;;
;;
--m=*|--me=*|--mes=*|--mess=*|--messa=*|--messag=*|--message=*)
--m=*|--me=*|--mes=*|--mess=*|--messa=*|--messag=*|--message=*)
log_given=m$log_given
log_given=m$log_given
if test "$log_message" = ''
if test "$log_message" = ''
then
then
log_message=`expr "z$1" : 'z-[^=]*=\(.*\)'`
log_message=`expr "z$1" : 'z-[^=]*=\(.*\)'`
else
else
log_message="$log_message
log_message="$log_message
`expr "z$1" : 'zq-[^=]*=\(.*\)'`"
`expr "z$1" : 'zq-[^=]*=\(.*\)'`"
fi
fi
no_edit=t
no_edit=t
shift
shift
;;
;;
-n|--n|--no|--no-|--no-v|--no-ve|--no-ver|--no-veri|--no-verif|--no-verify)
-n|--n|--no|--no-|--no-v|--no-ve|--no-ver|--no-veri|--no-verif|\
verify=
--no-verify)
shift
verify=
;;
shift
--a|--am|--ame|--amen|--amend)
;;
amend=t
--a|--am|--ame|--amen|--amend)
log_given=t$log_given
amend=t
use_commit=HEAD
log_given=t$log_given
shift
use_commit=HEAD
;;
shift
-c)
;;
case "$#" in 1) usage ;; esac
-c)
shift
case "$#" in 1) usage ;; esac
log_given=t$log_given
shift
use_commit="$1"
log_given=t$log_given
no_edit=
use_commit="$1"
shift
no_edit=
;;
shift
--ree=*|--reed=*|--reedi=*|--reedit=*|--reedit-=*|--reedit-m=*|\
;;
--reedit-me=*|--reedit-mes=*|--reedit-mess=*|--reedit-messa=*|\
--ree=*|--reed=*|--reedi=*|--reedit=*|--reedit-=*|--reedit-m=*|\
--reedit-messag=*|--reedit-message=*)
--reedit-me=*|--reedit-mes=*|--reedit-mess=*|--reedit-messa=*|\
log_given=t$log_given
--reedit-messag=*|--reedit-message=*)
use_commit=`expr "z$1" : 'z-[^=]*=\(.*\)'`
log_given=t$log_given
no_edit=
use_commit=`expr "z$1" : 'z-[^=]*=\(.*\)'`
shift
no_edit=
;;
shift
--ree|--reed|--reedi|--reedit|--reedit-|--reedit-m|--reedit-me|\
;;
--reedit-mes|--reedit-mess|--reedit-messa|--reedit-messag|--reedit-message)
--ree|--reed|--reedi|--reedit|--reedit-|--reedit-m|--reedit-me|\
case "$#" in 1) usage ;; esac
--reedit-mes|--reedit-mess|--reedit-messa|--reedit-messag|\
shift
--reedit-message)
log_given=t$log_given
case "$#" in 1) usage ;; esac
use_commit="$1"
shift
no_edit=
log_given=t$log_given
shift
use_commit="$1"
;;
no_edit=
-C)
shift
case "$#" in 1) usage ;; esac
;;
shift
-C)
log_given=t$log_given
case "$#" in 1) usage ;; esac
use_commit="$1"
shift
no_edit=t
log_given=t$log_given
shift
use_commit="$1"
;;
no_edit=t
--reu=*|--reus=*|--reuse=*|--reuse-=*|--reuse-m=*|--reuse-me=*|\
shift
--reuse-mes=*|--reuse-mess=*|--reuse-messa=*|--reuse-messag=*|\
;;
--reuse-message=*)
--reu=*|--reus=*|--reuse=*|--reuse-=*|--reuse-m=*|--reuse-me=*|\
log_given=t$log_given
--reuse-mes=*|--reuse-mess=*|--reuse-messa=*|--reuse-messag=*|\
use_commit=`expr "z$1" : 'z-[^=]*=\(.*\)'`
--reuse-message=*)
no_edit=t
log_given=t$log_given
shift
use_commit=`expr "z$1" : 'z-[^=]*=\(.*\)'`
;;
no_edit=t
--reu|--reus|--reuse|--reuse-|--reuse-m|--reuse-me|--reuse-mes|\
shift
--reuse-mess|--reuse-messa|--reuse-messag|--reuse-message)
;;
case "$#" in 1) usage ;; esac
--reu|--reus|--reuse|--reuse-|--reuse-m|--reuse-me|--reuse-mes|\
shift
--reuse-mess|--reuse-messa|--reuse-messag|--reuse-message)
log_given=t$log_given
case "$#" in 1) usage ;; esac
use_commit="$1"
shift
no_edit=t
log_given=t$log_given
shift
use_commit="$1"
;;
no_edit=t
-s|--s|--si|--sig|--sign|--signo|--signof|--signoff)
shift
signoff=t
;;
shift
-s|--s|--si|--sig|--sign|--signo|--signof|--signoff)
;;
signoff=t
-v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
shift
verbose=t
;;
shift
-v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
;;
verbose=t
-u|--u|--un|--unt|--untr|--untra|--untrac|--untrack|--untracke|--untracked|\
shift
--untracked-|--untracked-f|--untracked-fi|--untracked-fil|--untracked-file|\
;;
--untracked-files)
-u|--u|--un|--unt|--untr|--untra|--untrac|--untrack|--untracke|\
untracked_files=t
--untracked|--untracked-|--untracked-f|--untracked-fi|--untracked-fil|\
shift
--untracked-file|--untracked-files)
;;
untracked_files=t
--)
shift
shift
;;
break
--)
;;
shift
-*)
break
usage
;;
;;
-*)
*)
usage
break
;;
;;
*)
esac
break
;;
esac
done
done
case "$edit_flag" in t) no_edit= ;; esac
case "$edit_flag" in t) no_edit= ;; esac
@ -268,33 +270,33 @@ case "$edit_flag" in t) no_edit= ;; esac
case "$amend,$initial_commit" in
case "$amend,$initial_commit" in
t,t)
t,t)
die "You do not have anything to amend." ;;
die "You do not have anything to amend." ;;
t,)
t,)
if [ -f "$GIT_DIR/MERGE_HEAD" ]; then
if [ -f "$GIT_DIR/MERGE_HEAD" ]; then
die "You are in the middle of a merge -- cannot amend."
die "You are in the middle of a merge -- cannot amend."
fi ;;
fi ;;
esac
esac
case "$log_given" in
case "$log_given" in
tt*)
tt*)
die "Only one of -c/-C/-F can be used." ;;
die "Only one of -c/-C/-F can be used." ;;
*tm*|*mt*)
*tm*|*mt*)
die "Option -m cannot be combined with -c/-C/-F." ;;
die "Option -m cannot be combined with -c/-C/-F." ;;
esac
esac
case "$#,$also,$only,$amend" in
case "$#,$also,$only,$amend" in
*,t,t,*)
*,t,t,*)
die "Only one of --include/--only can be used." ;;
die "Only one of --include/--only can be used." ;;
0,t,,* | 0,,t,)
0,t,,* | 0,,t,)
die "No paths with --include/--only does not make sense." ;;
die "No paths with --include/--only does not make sense." ;;
0,,t,t)
0,,t,t)
only_include_assumed="# Clever... amending the last one with dirty index." ;;
only_include_assumed="# Clever... amending the last one with dirty index." ;;
0,,,*)
0,,,*)
;;
;;
*,,,*)
*,,,*)
only_include_assumed="# Explicit paths specified without -i nor -o; assuming --only paths..."
only_include_assumed="# Explicit paths specified without -i nor -o; assuming --only paths..."
also=
also=
;;
;;
esac
esac
unset only
unset only
case "$all,$also,$#" in
case "$all,$also,$#" in
@ -341,47 +343,47 @@ t,)
,)
,)
case "$#" in
case "$#" in
0)
0)
;; # commit as-is
;; # commit as-is
*)
*)
if test -f "$GIT_DIR/MERGE_HEAD"
if test -f "$GIT_DIR/MERGE_HEAD"
then
then
refuse_partial "Cannot do a partial commit during a merge."
refuse_partial "Cannot do a partial commit during a merge."
fi
fi
TMP_INDEX="$GIT_DIR/tmp-index$$"
TMP_INDEX="$GIT_DIR/tmp-index$$"
if test -z "$initial_commit"
if test -z "$initial_commit"
then
then
# make sure index is clean at the specified paths, or
# make sure index is clean at the specified paths, or
# they are additions.
# they are additions.
dirty_in_index=`git-diff-index --cached --name-status \
dirty_in_index=`git-diff-index --cached --name-status \
--diff-filter=DMTU HEAD -- "$@"`
--diff-filter=DMTU HEAD -- "$@"`
test -z "$dirty_in_index" ||
test -z "$dirty_in_index" ||
refuse_partial "Different in index and the last commit:
refuse_partial "Different in index and the last commit:
$dirty_in_index"
$dirty_in_index"
fi
fi
commit_only=`git-ls-files --error-unmatch -- "$@"` || exit
commit_only=`git-ls-files --error-unmatch -- "$@"` || exit
# Build the temporary index and update the real index
# Build the temporary index and update the real index
# the same way.
# the same way.
if test -z "$initial_commit"
if test -z "$initial_commit"
then
then
cp "$THIS_INDEX" "$TMP_INDEX"
cp "$THIS_INDEX" "$TMP_INDEX"
GIT_INDEX_FILE="$TMP_INDEX" git-read-tree -m HEAD
GIT_INDEX_FILE="$TMP_INDEX" git-read-tree -m HEAD
else
else
rm -f "$TMP_INDEX"
rm -f "$TMP_INDEX"
fi || exit
fi || exit
echo "$commit_only" |
echo "$commit_only" |
GIT_INDEX_FILE="$TMP_INDEX" \
GIT_INDEX_FILE="$TMP_INDEX" \
git-update-index --add --remove --stdin &&
git-update-index --add --remove --stdin &&
save_index &&
save_index &&
echo "$commit_only" |
echo "$commit_only" |
(
(
GIT_INDEX_FILE="$NEXT_INDEX"
GIT_INDEX_FILE="$NEXT_INDEX"
export GIT_INDEX_FILE
export GIT_INDEX_FILE
git-update-index --remove --stdin
git-update-index --remove --stdin
) || exit
) || exit
;;
;;
esac
esac
;;
;;
esac
esac
@ -399,7 +401,7 @@ else
fi
fi
GIT_INDEX_FILE="$USE_INDEX" \
GIT_INDEX_FILE="$USE_INDEX" \
git-update-index -q $unmerged_ok_if_status --refresh || exit
git-update-index -q $unmerged_ok_if_status --refresh || exit
################################################################
################################################################
# If the request is status, just show it and exit.
# If the request is status, just show it and exit.