35 lines
791 B
Bash
Executable File
35 lines
791 B
Bash
Executable File
#!/bin/sh
|
|
# between master..seen, are there merges that bring in
|
|
# more than one topic at a time?
|
|
|
|
endpoint=${1-seen}
|
|
|
|
tmp=/var/tmp/e.$$
|
|
rm -f "$tmp.1" "$tmp.2" &&
|
|
prev= &&
|
|
trap 'rm -f "$tmp.*"' 0 || exit
|
|
|
|
git rev-list --merges --first-parent master..$endpoint |
|
|
while read commit
|
|
do
|
|
# $tmp.1 has remaining topics after the merge we are looking at.
|
|
# $tmp.2 has remaining topics after the previous merge that is
|
|
# a descendant of the current merge.
|
|
|
|
git branch --list --no-merged "$commit" '??/*' >"$tmp.1"
|
|
if test -f "$tmp.2" && test -n "$prev"
|
|
then
|
|
cnt=$(comm -23 "$tmp.1" "$tmp.2" | wc -l)
|
|
if test $cnt != 1
|
|
then
|
|
echo Merges multiple topics
|
|
git show -s --format="* %s" "$prev"
|
|
comm -23 "$tmp.1" "$tmp.2"
|
|
exit
|
|
|
|
fi
|
|
fi
|
|
mv -f "$tmp.1" "$tmp.2"
|
|
prev=$commit
|
|
done
|