diff options
author | Junio C Hamano <junkio@cox.net> | 2005-08-08 02:51:09 +0400 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-08-10 10:38:50 +0400 |
commit | 4282c4fbddfeae3383c6c327e2ca98b25500ea31 (patch) | |
tree | 0d999918a638a97e65724117d7a2e12c0e665d8a /git-cherry | |
parent | 32173e69881a35e4e7a53be3ba80091ae9fa8f35 (diff) |
Teach format-patch, rebase and cherry a..b format
Although these commands take only begin and end, not necessarily
generic SHA1 expressions rev-parse supports, supporting a..b
notation is good for consistency. This commit adds such without
breaking backward compatibility.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-cherry')
-rwxr-xr-x | git-cherry | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/git-cherry b/git-cherry index 0cd7d40055..f14f017efe 100755 --- a/git-cherry +++ b/git-cherry @@ -3,6 +3,8 @@ # Copyright (c) 2005 Junio C Hamano. # +. git-sh-setup-script || die "Not a git archive." + usage="usage: $0 "'<upstream> [<head>] __*__*__*__*__> <upstream> @@ -18,8 +20,8 @@ upstream, it is shown on the standard output. The output is intended to be used as: OLD_HEAD=$(git-rev-parse HEAD) - git-rev-parse linus >${GIT_DIR-.}/HEAD - git-cherry linus OLD_HEAD | + git-rev-parse upstream >${GIT_DIR-.}/HEAD + git-cherry upstream $OLD_HEAD | while read commit do GIT_EXTERNAL_DIFF=git-apply-patch-script git-diff-tree -p "$commit" && @@ -27,20 +29,27 @@ The output is intended to be used as: done ' +case "$#,$1" in +1,*..*) + upstream=$(expr "$1" : '\(.*\)\.\.') ours=$(expr "$1" : '.*\.\.\(.*\)$') + set x "$upstream" "$ours" + shift ;; +esac + case "$#" in -1) linus=`git-rev-parse --verify "$1"` && - junio=`git-rev-parse --verify HEAD` || exit +1) upstream=`git-rev-parse --verify "$1"` && + ours=`git-rev-parse --verify HEAD` || exit ;; -2) linus=`git-rev-parse --verify "$1"` && - junio=`git-rev-parse --verify "$2"` || exit +2) upstream=`git-rev-parse --verify "$1"` && + ours=`git-rev-parse --verify "$2"` || exit ;; *) echo >&2 "$usage"; exit 1 ;; esac # Note that these list commits in reverse order; # not that the order in inup matters... -inup=`git-rev-list ^$junio $linus` && -ours=`git-rev-list $junio ^$linus` || exit +inup=`git-rev-list ^$ours $upstream` && +ours=`git-rev-list $ours ^$upstream` || exit tmp=.cherry-tmp$$ patch=$tmp-patch |