X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-commit.sh;h=7e39c107cff93f601c51fec6544a0defe9814db1;hb=ee34518d629331dadd58b1a75294369d679eda8b;hp=1206c20c2eca1edfb9318891d8237685d237c945;hpb=8098a178b26dc7a158d129a092a5b78da6d12b72;p=git.git diff --git a/git-commit.sh b/git-commit.sh index 1206c20c..7e39c107 100755 --- a/git-commit.sh +++ b/git-commit.sh @@ -3,11 +3,8 @@ # Copyright (c) 2005 Linus Torvalds # -. git-sh-setup || die "Not a git archive" - -usage () { - die 'git commit [-a] [-v | --no-verify] [-m ] [-F ] [(-C|-c) ] [...]' -} +USAGE='[-a] [-s] [-v | --no-verify] [-m | -F | (-C|-c) ] [-e] [...]' +. git-sh-setup all= logfile= use_commit= no_edit= log_given= log_message= verify=t signoff= while case "$#" in 0) break;; esac @@ -92,14 +89,17 @@ tt*) esac case "$all,$#" in -t,*) +t,0) git-diff-files --name-only -z | git-update-index --remove -z --stdin ;; +t,*) + die "Cannot use -a and explicit files at the same time." + ;; ,0) ;; *) - git-diff-files --name-only -z "$@" | + git-diff-files --name-only -z -- "$@" | git-update-index --remove -z --stdin ;; esac || exit 1 @@ -129,28 +129,31 @@ then elif test "$use_commit" != "" then git-cat-file commit "$use_commit" | sed -e '1,/^$/d' -fi | git-stripspace >.editmsg +elif test -f "$GIT_DIR/MERGE_HEAD" && test -f "$GIT_DIR/MERGE_MSG" +then + cat "$GIT_DIR/MERGE_MSG" +fi | git-stripspace >"$GIT_DIR"/COMMIT_EDITMSG case "$signoff" in t) - git-var GIT_COMMITTER_IDENT | sed -e ' - s/>.*/>/ - s/^/Signed-off-by: / - ' >>.editmsg + { + echo + git-var GIT_COMMITTER_IDENT | sed -e ' + s/>.*/>/ + s/^/Signed-off-by: / + ' + } >>"$GIT_DIR"/COMMIT_EDITMSG ;; esac if [ -f "$GIT_DIR/MERGE_HEAD" ]; then - - test -f "$GIT_DIR/MERGE_MSG" && cat "$GIT_DIR/MERGE_MSG" - echo "#" echo "# It looks like your may be committing a MERGE." echo "# If this is not correct, please remove the file" echo "# $GIT_DIR/MERGE_HEAD" echo "# and try again" echo "#" -fi >>.editmsg +fi >>"$GIT_DIR"/COMMIT_EDITMSG PARENTS="-p HEAD" if GIT_DIR="$GIT_DIR" git-rev-parse --verify HEAD >/dev/null 2>&1 @@ -181,7 +184,7 @@ then } ' set_author_env=`git-cat-file commit "$use_commit" | - sed -ne "$pick_author_script"` + LANG=C LC_ALL=C sed -ne "$pick_author_script"` eval "$set_author_env" export GIT_AUTHOR_NAME export GIT_AUTHOR_EMAIL @@ -194,16 +197,16 @@ else fi PARENTS="" fi -git-status >>.editmsg -if [ "$?" != "0" -a ! -f $GIT_DIR/MERGE_HEAD ] +git-status >>"$GIT_DIR"/COMMIT_EDITMSG +if [ "$?" != "0" -a ! -f "$GIT_DIR/MERGE_HEAD" ] then - rm -f .editmsg + rm -f "$GIT_DIR/COMMIT_EDITMSG" git-status exit 1 fi case "$no_edit" in '') - ${VISUAL:-${EDITOR:-vi}} .editmsg + ${VISUAL:-${EDITOR:-vi}} "$GIT_DIR/COMMIT_EDITMSG" ;; esac @@ -211,16 +214,20 @@ case "$verify" in t) if test -x "$GIT_DIR"/hooks/commit-msg then - "$GIT_DIR"/hooks/commit-msg .editmsg || exit + "$GIT_DIR"/hooks/commit-msg "$GIT_DIR"/COMMIT_EDITMSG || exit fi esac -grep -v '^#' < .editmsg | git-stripspace > .cmitmsg -grep -v -i '^Signed-off-by' .cmitmsg >.cmitchk -if test -s .cmitchk +grep -v '^#' < "$GIT_DIR"/COMMIT_EDITMSG | +git-stripspace > "$GIT_DIR"/COMMIT_MSG + +if cnt=`grep -v -i '^Signed-off-by' "$GIT_DIR"/COMMIT_MSG | + git-stripspace | + wc -l` && + test 0 -lt $cnt then tree=$(git-write-tree) && - commit=$(cat .cmitmsg | git-commit-tree $tree $PARENTS) && + commit=$(cat "$GIT_DIR"/COMMIT_MSG | git-commit-tree $tree $PARENTS) && git-update-ref HEAD $commit $current && rm -f -- "$GIT_DIR/MERGE_HEAD" else @@ -228,7 +235,7 @@ else false fi ret="$?" -rm -f .cmitmsg .editmsg .cmitchk +rm -f "$GIT_DIR/COMMIT_MSG" "$GIT_DIR/COMMIT_EDITMSG" if test -x "$GIT_DIR"/hooks/post-commit && test "$ret" = 0 then