| 1 | #!/bin/dash |
| 2 | |
| 3 | MASTER=master |
| 4 | |
| 5 | for range in $( |
| 6 | { |
| 7 | git for-each-ref --format='%(refname)' refs/heads/maint-\* | |
| 8 | perl -e ' |
| 9 | sub compare_dotted_version { |
| 10 | my (@ours) = split(/\./, $_[0]); |
| 11 | my (@theirs) = split(/\./, $_[1]); |
| 12 | my ($i, $diff); |
| 13 | |
| 14 | for ($i = 0; $i < @ours && $i < @theirs; $i++) { |
| 15 | $diff = $ours[$i] - $theirs[$i]; |
| 16 | return $diff if ($diff); |
| 17 | } |
| 18 | return 1 if ($i < @ours); |
| 19 | return -1 if ($i < @theirs); |
| 20 | return 0; |
| 21 | } |
| 22 | my @maint = (); |
| 23 | while (<STDIN>) { |
| 24 | next unless s|^refs/heads/||; |
| 25 | chomp; |
| 26 | my ($v) = ($_ =~ /^maint-(.*)$/); |
| 27 | push @maint, [$v, $_]; |
| 28 | } |
| 29 | for (map { $_->[1] } |
| 30 | sort { compare_dotted_version($a->[0], $b->[0]) } |
| 31 | @maint) { |
| 32 | print "$_\n"; |
| 33 | } |
| 34 | ' && |
| 35 | cat <<-EOF |
| 36 | maint |
| 37 | $MASTER |
| 38 | next |
| 39 | EOF |
| 40 | } | |
| 41 | { |
| 42 | prev_branch= |
| 43 | while read branch |
| 44 | do |
| 45 | if test -n "$prev_branch" |
| 46 | then |
| 47 | echo "$branch..$prev_branch" |
| 48 | fi |
| 49 | prev_branch=$branch |
| 50 | done |
| 51 | } |
| 52 | ) seen..jch |
| 53 | do |
| 54 | lg=$(git log --oneline "$range") |
| 55 | if test -n "$lg" |
| 56 | then |
| 57 | echo "*** $range ***" |
| 58 | echo "$lg" |
| 59 | fi |
| 60 | done |
| 61 | |
| 62 | if ! next_equiv=$(git rev-parse --verify 'jch^{/^### match next}' 2>/dev/null) || |
| 63 | ! git diff --stat --exit-code next $next_equiv |
| 64 | then |
| 65 | next_tree=$(git rev-parse next^{tree}) && |
| 66 | next_equiv=$(git rev-list --first-parent $MASTER^..seen | |
| 67 | xargs -n1 sh -c ' |
| 68 | echo $(git rev-parse $1^{tree}) $1 |
| 69 | ' - | sed -n -e "s/^$next_tree //p" |
| 70 | ) |
| 71 | fi |
| 72 | |
| 73 | if test -n "$next_equiv" |
| 74 | then |
| 75 | jch=$(git rev-list --first-parent $MASTER..jch | wc -l) && |
| 76 | seen=$(git rev-list --first-parent $MASTER..seen | wc -l) && |
| 77 | next=$(git rev-list --first-parent $MASTER..$next_equiv | wc -l) && |
| 78 | if test $jch -le $next |
| 79 | then |
| 80 | echo "$MASTER..$jch..jch..$next..next..$seen..seen" |
| 81 | else |
| 82 | echo "$MASTER..$next..next..$jch..jch..$seen..seen" |
| 83 | fi |
| 84 | fi |
| 85 | |
| 86 | sh "$(dirname $0)/onemerge.sh" |
| 87 | sh "$(dirname $0)/basecheck.sh" |