#!/bin/sh
#
# Copyright (c) 2005 Junio C Hamano.
#

. git-sh-setup || die "Not a git archive."

usage="usage: $0 "'[-v] <upstream> [<head>]

             __*__*__*__*__> <upstream>
            /
  fork-point
            \__+__+__+__+__+__+__+__> <head>

Each commit between the fork-point and <head> is examined, and
compared against the change each commit between the fork-point and
<upstream> 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 "-".
'

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) upstream=`git-rev-parse --verify "$1"` &&
   ours=`git-rev-parse --verify HEAD` || 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 ^$ours $upstream` &&
ours=`git-rev-list $ours ^$upstream` || exit

tmp=.cherry-tmp$$
patch=$tmp-patch
mkdir $patch
trap "rm -rf $tmp-*" 0 1 2 3 15

_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"

for c in $inup
do
	git-diff-tree -p $c
done | git-patch-id |
while read id name
do
	echo $name >>$patch/$id
done

LF='
'

O=
for c in $ours
do
	set x `git-diff-tree -p $c | git-patch-id`
	if test "$2" != ""
	then
		if test -f "$patch/$2"
		then
			sign=-
		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" ;;
		esac
	fi
done
case "$O" in
'') ;;
*)  echo "$O" ;;
esac
