#!/bin/sh
# Merge later...

MASTER=master

: "${target:=maint}" "${here:=$MASTER}"

# Read from RelNotes and find mergeable topics
search_topics () {
	tmp=/tmp/ML.$$
	trap 'rm -f "$tmp"' 0
	git rev-list --parents --first-parent $target..$here >"$tmp"

	x40='[0-9a-f]'
	x40="$x40$x40$x40$x40$x40"
	x40="$x40$x40$x40$x40$x40$x40$x40$x40"
	sed -n -e 's/^   (merge \([0-9a-f]*\) \([^ ]*\) later to maint.*/\1 \2/p' |
	while read sha1 topic
	do
		if ! full_sha1=$(git rev-parse --verify "$sha1")
		then
			echo >&2 "Not found: $sha1 $topic"
			continue
		fi

		comment=
		if ! git show-ref --quiet --verify "refs/heads/$topic"
		then
			comment="$topic gone"
			tip=$full_sha1 topic=$sha1
		elif tip=$(git rev-parse --verify "refs/heads/$topic") &&
		     test "$tip" != "$full_sha1"
		then
			echo >&2 "$topic # $tip moved from $sha1"
			continue
		fi

		ago= lg=0
		fp=$(
		    sed -ne "s/^\($x40\) $x40 $tip"'$/\1/p' "$tmp"
		) &&
		test -n "$fp" &&
		ago=$(
		    git show -s --format='%ar' $fp
		) &&
		lg=$(git log --oneline $target..$tip | wc -l)
		if test $lg != 0
		then
			echo "$topic # $lg${ago+ ($ago)}${comment+ $comment}"
		else
			echo "# $topic already merged${ago+ ($ago)}${comment+ $comment}"
		fi
	done
}

while	case "$#,$1" in
	0,*)
		break ;;
	*,-t)
		target=${2?"-t target???"}
		git show-ref --quiet --verify "refs/heads/$target" || {
			echo >&2 "$target: no such branch"
			exit 1
		}
		shift ;;
	*)
		break ;;
	esac
do
	shift
done

case $# in
0)
	search_topics
	exit $?
	;;
esac

for topic
do
	sha1=$(git rev-parse --short $topic)
	echo "   (merge $sha1 $topic later to maint)."
done

