cherry-pick: make -r the default

And introduce -x to expose (possibly) private commit object name
for people who cherry-pick between public branches.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2006-10-05 17:54:14 -07:00
parent bc108f63da
commit abd6970aca
2 changed files with 23 additions and 12 deletions

View file

@ -7,7 +7,7 @@ git-cherry-pick - Apply the change introduced by an existing commit
SYNOPSIS SYNOPSIS
-------- --------
'git-cherry-pick' [--edit] [-n] [-r] <commit> 'git-cherry-pick' [--edit] [-n] [-x] <commit>
DESCRIPTION DESCRIPTION
----------- -----------
@ -24,13 +24,22 @@ OPTIONS
With this option, `git-cherry-pick` will let you edit the commit With this option, `git-cherry-pick` will let you edit the commit
message prior committing. message prior committing.
-r|--replay:: -x::
Usually the command appends which commit was Cause the command to append which commit was
cherry-picked after the original commit message when cherry-picked after the original commit message when
making a commit. This option, '--replay', causes it to making a commit. Do not use this option if you are
use the original commit message intact. This is useful cherry-picking from your private branch because the
when you are reordering the patches in your private tree information is useless to the recipient. If on the
before publishing. other hand you are cherry-picking between two publicly
visible branches (e.g. backporting a fix to a
maintenance branch for an older release from a
development branch), adding this information can be
useful.
-r|--replay::
It used to be that the command defaulted to do `-x`
described above, and `-r` was to disable it. Now the
default is not to do `-x` so this option is a no-op.
-n|--no-commit:: -n|--no-commit::
Usually the command automatically creates a commit with Usually the command automatically creates a commit with

View file

@ -12,13 +12,13 @@ case "$0" in
*-cherry-pick* ) *-cherry-pick* )
edit= edit=
me=cherry-pick me=cherry-pick
USAGE='[--edit] [-n] [-r] <commit-ish>' ;; USAGE='[--edit] [-n] [-r] [-x] <commit-ish>' ;;
* ) * )
die "What are you talking about?" ;; die "What are you talking about?" ;;
esac esac
. git-sh-setup . git-sh-setup
no_commit= replay= no_commit= replay=t
while case "$#" in 0) break ;; esac while case "$#" in 0) break ;; esac
do do
case "$1" in case "$1" in
@ -32,8 +32,10 @@ do
--n|--no|--no-|--no-e|--no-ed|--no-edi|--no-edit) --n|--no|--no-|--no-e|--no-ed|--no-edi|--no-edit)
edit= edit=
;; ;;
-r|--r|--re|--rep|--repl|--repla|--replay) -r)
replay=t : no-op ;;
-x|--i-really-want-to-expose-my-private-commit-object-name)
replay=
;; ;;
-*) -*)
usage usage
@ -121,7 +123,7 @@ cherry-pick)
git-cat-file commit $commit | sed -e '1,/^$/d' git-cat-file commit $commit | sed -e '1,/^$/d'
case "$replay" in case "$replay" in
'') '')
echo "(cherry picked from $commit commit)" echo "(cherry picked from commit $commit)"
test "$rev" = "$commit" || test "$rev" = "$commit" ||
echo "(original 'git cherry-pick' arguments: $@)" echo "(original 'git cherry-pick' arguments: $@)"
;; ;;