X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-cherry;h=e186363647e2dcf0ecd72efb3cd609dde6a672bf;hb=e70a165d3db26dbab62e3430553a21d5e97b74ec;hp=e2a1a2db9fda633c174c25df76d4307ec33ff643;hpb=93c36dcd0a4f6373e3a02a8505046801106ddb85;p=git.git diff --git a/git-cherry b/git-cherry index e2a1a2db..e1863636 100755 --- a/git-cherry +++ b/git-cherry @@ -3,7 +3,9 @@ # Copyright (c) 2005 Junio C Hamano. # -usage="usage: $0 "' [] +. git-sh-setup-script || die "Not a git archive." + +usage="usage: $0 "'[-v] [] __*__*__*__*__> / @@ -18,29 +20,38 @@ 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" && - git-commit-script -m "$commit" + git-commit-script -C "$commit" done ' +case "$1" in -v) verbose=t; shift ;; esac + +case "$#,$1" in +1,*..*) + upstream=$(expr "$1" : '\(.*\)\.\.') ours=$(expr "$1" : '.*\.\.\(.*\)$') + set x "$upstream" "$ours" + shift ;; +esac + case "$#" in -1) linus=`git-rev-parse "$1"` && - junio=`git-rev-parse HEAD` || exit +1) upstream=`git-rev-parse --verify "$1"` && + ours=`git-rev-parse --verify HEAD` || exit ;; -2) linus=`git-rev-parse "$1"` && - junio=`git-rev-parse "$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 @@ -74,6 +85,10 @@ do else sign=+ fi + case "$verbose" in + t) + c=$(git-rev-list --pretty=oneline --max-count=1 $c) + esac case "$O" in '') O="$sign $c" ;; *) O="$sign $c$LF$O" ;;