summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5ccfb75)
raw | patch | inline | side by side (parent: 5ccfb75)
author | Junio C Hamano <junkio@cox.net> | |
Tue, 9 Aug 2005 00:03:14 +0000 (17:03 -0700) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Wed, 10 Aug 2005 05:28:22 +0000 (22:28 -0700) |
While moving '-m' to make room for CVS compatible "here is the
log message", enhance source of log parameters.
-m 'message': a command line parameter.
-F <file> : a file (use '-' to read from stdin).
-C <commit> : message in existing commit.
-c <commit> : message in existing commit (allows further editing).
Longer option names for these options are also available.
While we are at it, get rid of shell array bashism.
Signed-off-by: Junio C Hamano <junkio@cox.net>
log message", enhance source of log parameters.
-m 'message': a command line parameter.
-F <file> : a file (use '-' to read from stdin).
-C <commit> : message in existing commit.
-c <commit> : message in existing commit (allows further editing).
Longer option names for these options are also available.
While we are at it, get rid of shell array bashism.
Signed-off-by: Junio C Hamano <junkio@cox.net>
git-cherry | patch | blob | history | |
git-commit-script | patch | blob | history | |
git-rebase-script | patch | blob | history |
diff --git a/git-cherry b/git-cherry
index f3bfbf3a4e381010755161167ddec2a64f68a17f..0cd7d40055356881b14e1a6074e61a3ab643d43b 100755 (executable)
--- a/git-cherry
+++ b/git-cherry
while read commit
do
GIT_EXTERNAL_DIFF=git-apply-patch-script git-diff-tree -p "$commit" &&
- git-commit-script -m "$commit"
+ git-commit-script -C "$commit"
done
'
diff --git a/git-commit-script b/git-commit-script
index 1d59f46b94fd817b87202ab7f053a0d60e03cf20..24ec446a9d7ed8ad08d25aa6c921eba4c80f0bfe 100755 (executable)
--- a/git-commit-script
+++ b/git-commit-script
. git-sh-setup-script || die "Not a git archive"
usage () {
- die 'git commit [--all] [-m existing-commit] [<path>...]'
+ die 'git commit [-a] [-m <message>] [-F <logfile>] [(-C|-c) <commit>] [<path>...]'
}
-files=()
-while case "$#" in 0) break ;; esac
+all= logfile= use_commit= no_edit= log_given= log_message=
+while case "$#" in 0) break;; esac
do
- case "$1" in
- -m) shift
- case "$#" in
- 0) usage ;;
- *) use_commit=`git-rev-parse --verify "$1"` ||
- exit ;;
- esac
- ;;
- --all)
- files=($(git-diff-files --name-only))\
- ;;
- *) break
- ;;
- esac
+ case "$1" in
+ -a|--a|--al|--all)
+ all=t
+ shift ;;
+ -F=*|--f=*|--fi=*|--fil=*|--file=*)
+ log_given=t$log_given
+ logfile=`expr "$1" : '-[^=]*=\(.*\)'`
+ no_edit=t
+ shift ;;
+ -F|--f|--fi|--fil|--file)
+ case "$#" in 1) usage ;; esac; shift
+ log_given=t$log_given
+ logfile="$1"
+ no_edit=t
+ shift ;;
+ -m=*|--m=*|--me=*|--mes=*|--mess=*|--messa=*|--messag=*|--message=*)
+ log_given=t$log_given
+ log_message=`expr "$1" : '-[^=]*=\(.*\)'`
+ no_edit=t
+ shift ;;
+ -m|--m|--me|--mes|--mess|--messa|--messag|--message)
+ case "$#" in 1) usage ;; esac; shift
+ log_given=t$log_given
+ log_message="$1"
+ no_edit=t
+ shift ;;
+ -c=*|--ree=*|--reed=*|--reedi=*|--reedit=*|--reedit-=*|--reedit-m=*|\
+ --reedit-me=*|--reedit-mes=*|--reedit-mess=*|--reedit-messa=*|\
+ --reedit-messag=*|--reedit-message=*)
+ log_given=t$log_given
+ use_commit=`expr "$1" : '-[^=]*=\(.*\)'`
+ shift ;;
+ -c|--ree|--reed|--reedi|--reedit|--reedit-|--reedit-m|--reedit-me|\
+ --reedit-mes|--reedit-mess|--reedit-messa|--reedit-messag|--reedit-message)
+ case "$#" in 1) usage ;; esac; shift
+ log_given=t$log_given
+ use_commit="$1"
+ shift ;;
+ -C=*|--reu=*|--reus=*|--reuse=*|--reuse-=*|--reuse-m=*|--reuse-me=*|\
+ --reuse-mes=*|--reuse-mess=*|--reuse-messa=*|--reuse-messag=*|\
+ --reuse-message=*)
+ log_given=t$log_given
+ use_commit=`expr "$1" : '-[^=]*=\(.*\)'`
+ no_edit=t
+ shift ;;
+ -C|--reu|--reus|--reuse|--reuse-|--reuse-m|--reuse-me|--reuse-mes|\
+ --reuse-mess|--reuse-messa|--reuse-messag|--reuse-message)
+ case "$#" in 1) usage ;; esac; shift
+ log_given=t$log_given
+ use_commit="$1"
+ no_edit=t
+ shift ;;
+ --)
shift
+ break ;;
+ -*)
+ usage ;;
+ *)
+ break ;;
+ esac
done
-git-update-cache -q --refresh -- "$@" "${files[@]}" || exit 1
+case "$log_given" in
+tt*)
+ die "Only one of -c/-C/-F/-m can be used." ;;
+esac
+
+case "$all" in
+t)
+ git-diff-files --name-only -z |
+ xargs -0 git-update-cache -q -- || exit 1 ;;
+esac
+git-update-cache -q --refresh -- "$@" || exit 1
+
PARENTS="-p HEAD"
if [ ! -r "$GIT_DIR/HEAD" ]; then
if [ -z "$(git-ls-files)" ]; then
echo Nothing to commit 1>&2
exit 1
fi
- (
+ {
echo "#"
echo "# Initial commit"
+ case "$no_edit" in
+ t) echo "# (ignoring your commit message for initial commit)"
+ no_edit=
+ esac
echo "#"
git-ls-files | sed 's/^/# New file: /'
echo "#"
- ) > .editmsg
+ } >.editmsg
PARENTS=""
+ no_edit=
else
if [ -f "$GIT_DIR/MERGE_HEAD" ]; then
echo "#"
echo "# If this is not correct, please remove the file"
echo "# $GIT_DIR/MERGE_HEAD"
echo "# and try again"
+ case "$no_edit" in
+ t) echo "# (ignoring your commit message for merge commit)"
+ no_edit=
+ esac
echo "#"
PARENTS="-p HEAD -p MERGE_HEAD"
+ elif test "$log_message" != ''
+ then
+ echo "$log_message"
+ elif test "$logfile" != ""
+ then
+ if test "$logfile" = -
+ then
+ test -t 0 &&
+ echo >&2 "(reading log message from standard input)"
+ cat
+ else
+ cat <"$logfile"
+ fi
elif test "$use_commit" != ""
then
pick_author_script='
rm .editmsg
exit 1
fi
-case "$use_commit" in
+case "$no_edit" in
'')
${VISUAL:-${EDITOR:-vi}} .editmsg
;;
esac
grep -v '^#' < .editmsg | git-stripspace > .cmitmsg
-[ -s .cmitmsg ] &&
+if test -s .cmitmsg
+then
tree=$(git-write-tree) &&
commit=$(cat .cmitmsg | git-commit-tree $tree $PARENTS) &&
echo $commit > "$GIT_DIR/HEAD" &&
rm -f -- "$GIT_DIR/MERGE_HEAD"
+else
+ echo >&2 "* no commit message? aborting commit."
+ false
+fi
ret="$?"
rm -f .cmitmsg .editmsg
exit "$ret"
diff --git a/git-rebase-script b/git-rebase-script
index 5b791c6bda49ff82fb562519711eb8c7abb6bc55..83289845ac6d260060ac47055b3d9992c8bde822 100755 (executable)
--- a/git-rebase-script
+++ b/git-rebase-script
esac
S=`cat "$GIT_DIR/HEAD"` &&
GIT_EXTERNAL_DIFF=git-apply-patch-script git-diff-tree -p $commit &&
- git-commit-script -m "$commit" || {
+ git-commit-script -C "$commit" || {
echo $commit >>$fail
git-read-tree --reset -u $S
}