X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=git-cherry;h=fe8c1090e97faa0fd0a34c2a12d748916aaa6b05;hb=6e7722e6f88c049f43a1c00c45c502542d1a5752;hp=f3bfbf3a4e381010755161167ddec2a64f68a17f;hpb=89ab859e9452cbc8f1f15afab52257e9b789c899;p=git.git diff --git a/git-cherry b/git-cherry index f3bfbf3a..fe8c1090 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] [] __*__*__*__*__> / @@ -12,35 +14,34 @@ usage="usage: $0 "' [] Each commit between the fork-point and is examined, and compared against the change each commit between the fork-point and - introduces. If the change does not seem to be in the -upstream, it is shown on the standard output. + introduces. If the change seems to be in the upstream, +it is shown on the standard output with prefix "+". Otherwise +it is shown with prefix "-". +' -The output is intended to be used as: +case "$1" in -v) verbose=t; shift ;; esac - OLD_HEAD=$(git-rev-parse HEAD) - git-rev-parse linus >${GIT_DIR-.}/HEAD - git-cherry linus OLD_HEAD | - while read commit - do - GIT_EXTERNAL_DIFF=git-apply-patch-script git-diff-tree -p "$commit" && - git-commit-script -m "$commit" - 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 @@ -74,6 +75,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" ;;