]> git.ipfire.org Git - thirdparty/git.git/blame - CheckPush
What's cooking (2024/01 #09)
[thirdparty/git.git] / CheckPush
CommitLineData
c9c45970 1#!/bin/dash
9392cbd4 2
bd45e1c3
JH
3MASTER=master
4
9392cbd4 5for range in $(
9392cbd4 6 {
c9c45970 7 git for-each-ref --format='%(refname)' refs/heads/maint-\* |
33ac7d22
JH
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 }
c9c45970 34 ' &&
9392cbd4
JH
35 cat <<-EOF
36 maint
bd45e1c3 37 $MASTER
9392cbd4
JH
38 next
39 EOF
40 } |
c9c45970
JH
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 }
c483b4cf 52) seen..jch
9392cbd4
JH
53do
54 lg=$(git log --oneline "$range")
55 if test -n "$lg"
56 then
57 echo "*** $range ***"
58 echo "$lg"
59 fi
60done
61
8ecb1c05
JH
62if ! next_equiv=$(git rev-parse --verify 'jch^{/^### match next}' 2>/dev/null) ||
63 ! git diff --stat --exit-code next $next_equiv
64then
65 next_tree=$(git rev-parse next^{tree}) &&
34e2cba4 66 next_equiv=$(git rev-list --first-parent $MASTER^..seen |
8ecb1c05
JH
67 xargs -n1 sh -c '
68 echo $(git rev-parse $1^{tree}) $1
69 ' - | sed -n -e "s/^$next_tree //p"
70 )
71fi
72
73if test -n "$next_equiv"
63462397 74then
bd45e1c3
JH
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) &&
21723c4f
JH
78 if test $jch -le $next
79 then
bd45e1c3 80 echo "$MASTER..$jch..jch..$next..next..$seen..seen"
21723c4f 81 else
bd45e1c3 82 echo "$MASTER..$next..next..$jch..jch..$seen..seen"
21723c4f 83 fi
63462397 84fi