combine-diff: better hunk splitting.
[gitweb.git] / git-commit.sh
index daf90f1e58242f069e2fde5f44677f60a98e2a0c..193feeb5e42f1a486a3aae42935cb98696a2baac 100755 (executable)
@@ -3,11 +3,8 @@
 # Copyright (c) 2005 Linus Torvalds
 #
 
-. git-sh-setup || die "Not a git archive"
-
-usage () {
-       die 'git commit [-a] [-s] [-v | --no-verify]  [-m <message> | -F <logfile> | (-C|-c) <commit>] [-e] [<path>...]'
-}
+USAGE='[-a] [-s] [-v | --no-verify]  [-m <message> | -F <logfile> | (-C|-c) <commit>] [-e] [<path>...]'
+. git-sh-setup
 
 all= logfile= use_commit= no_edit= log_given= log_message= verify=t signoff=
 while case "$#" in 0) break;; esac
@@ -92,10 +89,13 @@ 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)
        ;;
 *)
@@ -148,7 +148,7 @@ esac
 
 if [ -f "$GIT_DIR/MERGE_HEAD" ]; then
        echo "#"
-       echo "# It looks like your may be committing a MERGE."
+       echo "# It looks like you may be committing a MERGE."
        echo "# If this is not correct, please remove the file"
        echo "# $GIT_DIR/MERGE_HEAD"
        echo "# and try again"
@@ -165,6 +165,7 @@ then
        then
                pick_author_script='
                /^author /{
+                       s/'\''/'\''\\'\'\''/g
                        h
                        s/^author \([^<]*\) <[^>]*> .*$/\1/
                        s/'\''/'\''\'\'\''/g
@@ -184,7 +185,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