You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

63 lines
1.3 KiB

#!/bin/sh
# Merge later...
# Read from RelNotes and find mergeable topics
search_topics () {
tmp=/tmp/ML.$$
trap 'rm -f "$tmp"' 0
git rev-list --parents --first-parent maint..master >"$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" &&
test $(git log --oneline maint..$full_sha1 | wc -l) != 0
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 "$tip moved from $sha1"
continue
fi
ago=
fp=$(
sed -ne "s/^\($x40\) $x40 $tip"'$/\1/p' "$tmp"
) &&
ago=$(
git show -s --format='%ar' $fp
)
lg=$(git log --oneline maint..$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
}
case $# in
0)
search_topics
exit $?
;;
esac
for topic
do
sha1=$(git rev-parse --short $topic)
echo " (merge $sha1 $topic later to maint)."
done