What's cooking (2012/05 #07)
[git.git] / CheckPush
blob7ce0d9a411f94dd44ab05b269683619f574d3c37
1 #!/bin/sh
3 for range in $(
4 prev_branch=
6 git for-each-ref --format='%(refname)' refs/heads/maint-* |
7 sed -e 's|^refs/heads/||'
8 cat <<-EOF
9 maint
10 master
11 next
12 EOF
13 } |
14 while read branch
16 if test -n "$prev_branch"
17 then
18 echo "$branch..$prev_branch"
20 prev_branch=$branch
21 done
22 ) pu..jch
24 lg=$(git log --oneline "$range")
25 if test -n "$lg"
26 then
27 echo "*** $range ***"
28 echo "$lg"
30 done
32 if next_tree=$(git rev-parse next^{tree}) &&
33 next_equiv=$(git rev-list --first-parent master..pu |
34 xargs -n1 sh -c '
35 echo $(git rev-parse $1^{tree}) $1
36 ' - | sed -n -e "s/^$next_tree //p"
37 ) &&
38 test -n "$next_equiv"
39 then
40 jch=$(git rev-list --first-parent master..jch | wc -l) &&
41 pu=$(git rev-list --first-parent master..pu | wc -l) &&
42 next=$(git rev-list --first-parent master..$next_equiv | wc -l) &&
43 if test $jch -le $next
44 then
45 echo "master..$jch..jch..$next..next..$pu..pu"
46 else
47 echo "master..$next..next..$jch..jch..$pu..pu"
49 else
50 echo "git diff --stat next jch"
51 git diff --stat next jch