8 git for-each-ref --format='%(refname)' refs/heads/maint-* |
10 sub compare_dotted_version {
11 my (@ours) = split(/\./, $_[0]);
12 my (@theirs) = split(/\./, $_[1]);
15 for ($i = 0; $i < @ours && $i < @theirs; $i++) {
16 $diff = $ours[$i] - $theirs[$i];
17 return $diff if ($diff);
19 return 1 if ($i < @ours);
20 return -1 if ($i < @theirs);
25 next unless s|^refs/heads/||;
27 my ($v) = ($_ =~ /^maint-(.*)$/);
28 push @maint, [$v, $_];
31 sort { compare_dotted_version($a->[0], $b->[0]) }
44 if test -n "$prev_branch"
46 echo "$branch..$prev_branch"
52 lg=$(git log --oneline "$range")
60 if ! next_equiv=$(git rev-parse --verify 'jch^{/^### match next}' 2>/dev/null) ||
61 ! git diff --stat --exit-code next $next_equiv
63 next_tree=$(git rev-parse next^{tree}) &&
64 next_equiv=$(git rev-list --first-parent $MASTER..seen |
66 echo $(git rev-parse $1^{tree}) $1
67 ' - | sed -n -e "s/^$next_tree //p"
71 if test -n "$next_equiv"
73 jch=$(git rev-list --first-parent $MASTER..jch | wc -l) &&
74 seen=$(git rev-list --first-parent $MASTER..seen | wc -l) &&
75 next=$(git rev-list --first-parent $MASTER..$next_equiv | wc -l) &&
76 if test $jch -le $next
78 echo "$MASTER..$jch..jch..$next..next..$seen..seen"
80 echo "$MASTER..$next..next..$jch..jch..$seen..seen"