X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-commit.sh;h=a4b0a907404f84581503d62011e5e82ecf50e715;hb=67644a4d77f55cd1c960d046079d26719f1e7cd6;hp=d9ec1f14d9ec3336c4c772d0c03f30d5f1511d56;hpb=21dbe12c76e43735dc623067c1b09ef43519d9fc;p=git.git diff --git a/git-commit.sh b/git-commit.sh index d9ec1f14..a4b0a907 100755 --- a/git-commit.sh +++ b/git-commit.sh @@ -161,14 +161,19 @@ run_status () { } ' - if test -n "$verbose" + if test -n "$verbose" -a -z "$IS_INITIAL" then git-diff-index --cached -M -p --diff-filter=MDTCRA $REFERENCE fi case "$committable" in 0) - echo "nothing to commit" - exit 1 + case "$amend" in + t) + echo "# No changes" ;; + *) + echo "nothing to commit" ;; + esac + exit 1 ;; esac exit 0 ) @@ -365,14 +370,16 @@ tt*) die "Only one of -c/-C/-F/-m can be used." ;; esac -case "$#,$also$only" in -*,tt) +case "$#,$also,$only,$amend" in +*,t,t,*) die "Only one of --include/--only can be used." ;; -0,t) +0,t,,* | 0,,t,) die "No paths with --include/--only does not make sense." ;; -0,) +0,,t,t) + only_include_assumed="# Clever... amending the last one with dirty index." ;; +0,,,*) ;; -*,) +*,,,*) only_include_assumed="# Explicit paths specified without -i nor -o; assuming --only paths..." also= ;; @@ -537,7 +544,7 @@ t) ;; esac -if [ -f "$GIT_DIR/MERGE_HEAD" ]; then +if test -f "$GIT_DIR/MERGE_HEAD" && test -z "$no_edit"; then echo "#" echo "# It looks like you may be committing a MERGE." echo "# If this is not correct, please remove the file" @@ -549,8 +556,8 @@ fi >>"$GIT_DIR"/COMMIT_EDITMSG # Author if test '' != "$force_author" then - GIT_AUTHOR_NAME=`expr "$force_author" : '\(.*[^ ]\) *<.*'` && - GIT_AUTHOR_EMAIL=`expr "$force_author" : '.*\(<.*\)'` && + GIT_AUTHOR_NAME=`expr "z$force_author" : 'z\(.*[^ ]\) *<.*'` && + GIT_AUTHOR_EMAIL=`expr "z$force_author" : '.*\(<.*\)'` && test '' != "$GIT_AUTHOR_NAME" && test '' != "$GIT_AUTHOR_EMAIL" || die "malformatted --author parameter" @@ -605,16 +612,23 @@ else current= fi -{ - test -z "$only_include_assumed" || echo "$only_include_assumed" - run_status -} >>"$GIT_DIR"/COMMIT_EDITMSG -if [ "$?" != "0" -a ! -f "$GIT_DIR/MERGE_HEAD" ] +if test -z "$no_edit" +then + { + test -z "$only_include_assumed" || echo "$only_include_assumed" + run_status + } >>"$GIT_DIR"/COMMIT_EDITMSG +else + # we need to check if there is anything to commit + run_status >/dev/null +fi +if [ "$?" != "0" -a ! -f "$GIT_DIR/MERGE_HEAD" -a -z "$amend" ] then rm -f "$GIT_DIR/COMMIT_EDITMSG" run_status exit 1 fi + case "$no_edit" in '') case "${VISUAL:-$EDITOR},$TERM" in @@ -626,6 +640,8 @@ case "$no_edit" in exit 1 ;; esac + git-var GIT_AUTHOR_IDENT > /dev/null || die + git-var GIT_COMMITTER_IDENT > /dev/null || die ${VISUAL:-${EDITOR:-vi}} "$GIT_DIR/COMMIT_EDITMSG" ;; esac @@ -660,7 +676,8 @@ then rm -f "$TMP_INDEX" fi && commit=$(cat "$GIT_DIR"/COMMIT_MSG | git-commit-tree $tree $PARENTS) && - git-update-ref HEAD $commit $current && + rlogm=$(sed -e 1q "$GIT_DIR"/COMMIT_MSG) && + git-update-ref -m "commit: $rlogm" HEAD $commit $current && rm -f -- "$GIT_DIR/MERGE_HEAD" && if test -f "$NEXT_INDEX" then