X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-commit.sh;h=4cf3fab05cd3c3367173c86a65665ddfc1d89805;hb=3cd4f5e8eb04ae01298ceaf46bb41a4277031916;hp=e74fe640b8acb87bef2cc118e87d8779c79f8786;hpb=cda8ab59bbdb24b4ef87083781dac1f4f1b973a1;p=git.git diff --git a/git-commit.sh b/git-commit.sh index e74fe640b..4cf3fab05 100755 --- a/git-commit.sh +++ b/git-commit.sh @@ -29,7 +29,7 @@ THIS_INDEX="$GIT_DIR/index" NEXT_INDEX="$GIT_DIR/next-index$$" rm -f "$NEXT_INDEX" save_index () { - cp "$THIS_INDEX" "$NEXT_INDEX" + cp -p "$THIS_INDEX" "$NEXT_INDEX" } report () { @@ -138,32 +138,26 @@ run_status () { if test -z "$untracked_files"; then option="--directory --no-empty-directory" fi + hdr_shown= if test -f "$GIT_DIR/info/exclude" then - git-ls-files -z --others $option \ + git-ls-files --others $option \ --exclude-from="$GIT_DIR/info/exclude" \ --exclude-per-directory=.gitignore else - git-ls-files -z --others $option \ + git-ls-files --others $option \ --exclude-per-directory=.gitignore fi | - perl -e '$/ = "\0"; - my $shown = 0; - while (<>) { - chomp; - s|\\|\\\\|g; - s|\t|\\t|g; - s|\n|\\n|g; - s/^/# /; - if (!$shown) { - print "#\n# Untracked files:\n"; - print "# (use \"git add\" to add to commit)\n"; - print "#\n"; - $shown = 1; - } - print "$_\n"; - } - ' + while read line; do + if [ -z "$hdr_shown" ]; then + echo '#' + echo '# Untracked files:' + echo '# (use "git add" to add to commit)' + echo '#' + hdr_shown=1 + fi + echo "# $line" + done if test -n "$verbose" -a -z "$IS_INITIAL" then @@ -223,13 +217,13 @@ do -F*|-f*) no_edit=t log_given=t$log_given - logfile=`expr "$1" : '-[Ff]\(.*\)'` + logfile=`expr "z$1" : 'z-[Ff]\(.*\)'` shift ;; --F=*|--f=*|--fi=*|--fil=*|--file=*) no_edit=t log_given=t$log_given - logfile=`expr "$1" : '-[^=]*=\(.*\)'` + logfile=`expr "z$1" : 'z-[^=]*=\(.*\)'` shift ;; -a|--a|--al|--all) @@ -237,7 +231,7 @@ do shift ;; --au=*|--aut=*|--auth=*|--autho=*|--author=*) - force_author=`expr "$1" : '-[^=]*=\(.*\)'` + force_author=`expr "z$1" : 'z-[^=]*=\(.*\)'` shift ;; --au|--aut|--auth|--autho|--author) @@ -277,11 +271,11 @@ $1" log_given=m$log_given if test "$log_message" = '' then - log_message=`expr "$1" : '-m\(.*\)'` + log_message=`expr "z$1" : 'z-m\(.*\)'` else log_message="$log_message -`expr "$1" : '-m\(.*\)'`" +`expr "z$1" : 'z-m\(.*\)'`" fi no_edit=t shift @@ -290,11 +284,11 @@ $1" log_given=m$log_given if test "$log_message" = '' then - log_message=`expr "$1" : '-[^=]*=\(.*\)'` + log_message=`expr "z$1" : 'z-[^=]*=\(.*\)'` else log_message="$log_message -`expr "$1" : '-[^=]*=\(.*\)'`" +`expr "z$1" : 'zq-[^=]*=\(.*\)'`" fi no_edit=t shift @@ -321,7 +315,7 @@ $1" --reedit-me=*|--reedit-mes=*|--reedit-mess=*|--reedit-messa=*|\ --reedit-messag=*|--reedit-message=*) log_given=t$log_given - use_commit=`expr "$1" : '-[^=]*=\(.*\)'` + use_commit=`expr "z$1" : 'z-[^=]*=\(.*\)'` no_edit= shift ;; @@ -346,7 +340,7 @@ $1" --reuse-mes=*|--reuse-mess=*|--reuse-messa=*|--reuse-messag=*|\ --reuse-message=*) log_given=t$log_given - use_commit=`expr "$1" : '-[^=]*=\(.*\)'` + use_commit=`expr "z$1" : 'z-[^=]*=\(.*\)'` no_edit=t shift ;; @@ -566,6 +560,9 @@ then elif test -f "$GIT_DIR/MERGE_HEAD" && test -f "$GIT_DIR/MERGE_MSG" then cat "$GIT_DIR/MERGE_MSG" +elif test -f "$GIT_DIR/SQUASH_MSG" +then + cat "$GIT_DIR/SQUASH_MSG" fi | git-stripspace >"$GIT_DIR"/COMMIT_EDITMSG case "$signoff" in @@ -596,7 +593,7 @@ then GIT_AUTHOR_EMAIL=`expr "z$force_author" : '.*\(<.*\)'` && test '' != "$GIT_AUTHOR_NAME" && test '' != "$GIT_AUTHOR_EMAIL" || - die "malformatted --author parameter" + die "malformed --author parameter" export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL elif test '' != "$use_commit" then @@ -632,9 +629,12 @@ fi PARENTS="-p HEAD" if test -z "$initial_commit" then + rloga='commit' if [ -f "$GIT_DIR/MERGE_HEAD" ]; then + rloga='commit (merge)' PARENTS="-p HEAD "`sed -e 's/^/-p /' "$GIT_DIR/MERGE_HEAD"` elif test -n "$amend"; then + rloga='commit (amend)' PARENTS=$(git-cat-file commit HEAD | sed -n -e '/^$/q' -e 's/^parent /-p /p') fi @@ -646,6 +646,7 @@ else fi PARENTS="" current= + rloga='commit (initial)' fi if test -z "$no_edit" @@ -663,7 +664,7 @@ else fi if [ "$?" != "0" -a ! -f "$GIT_DIR/MERGE_HEAD" -a -z "$amend" ] then - rm -f "$GIT_DIR/COMMIT_EDITMSG" + rm -f "$GIT_DIR/COMMIT_EDITMSG" "$GIT_DIR/SQUASH_MSG" run_status exit 1 fi @@ -693,13 +694,18 @@ t) fi esac -sed -e ' - /^diff --git a\/.*/{ - s/// - q - } - /^#/d -' "$GIT_DIR"/COMMIT_EDITMSG | +if test -z "$no_edit" +then + sed -e ' + /^diff --git a\/.*/{ + s/// + q + } + /^#/d + ' "$GIT_DIR"/COMMIT_EDITMSG +else + cat "$GIT_DIR"/COMMIT_EDITMSG +fi | git-stripspace >"$GIT_DIR"/COMMIT_MSG if cnt=`grep -v -i '^Signed-off-by' "$GIT_DIR"/COMMIT_MSG | @@ -716,7 +722,7 @@ then fi && commit=$(cat "$GIT_DIR"/COMMIT_MSG | git-commit-tree $tree $PARENTS) && rlogm=$(sed -e 1q "$GIT_DIR"/COMMIT_MSG) && - git-update-ref -m "commit: $rlogm" HEAD $commit $current && + git-update-ref -m "$rloga: $rlogm" HEAD $commit $current && rm -f -- "$GIT_DIR/MERGE_HEAD" && if test -f "$NEXT_INDEX" then @@ -729,7 +735,7 @@ else false fi ret="$?" -rm -f "$GIT_DIR/COMMIT_MSG" "$GIT_DIR/COMMIT_EDITMSG" +rm -f "$GIT_DIR/COMMIT_MSG" "$GIT_DIR/COMMIT_EDITMSG" "$GIT_DIR/SQUASH_MSG" if test -d "$GIT_DIR/rr-cache" then git-rerere