]> git.ozlabs.org Git - next-scripts/blob - summary
Update because I moved the next refs
[next-scripts] / summary
1 #!/bin/bash --norc
2
3 d="$1"
4 prev="$2"
5
6 LOG_FILE="../stats/next-$d-summary"
7
8 cp /dev/null $LOG_FILE
9
10 log()
11 {
12         echo "$@" | tee -a $LOG_FILE
13 }
14
15 plog()
16 {
17         printf "$@" | tee -a $LOG_FILE
18 }
19
20 patch_and_sha_ids()
21 {
22         echo "$*" | xargs -r -n 1 git diff-tree -p | git patch-id | sort
23 }
24
25 patch_ids()
26 {
27         patch_and_sha_ids "$@" | cut -d' ' -f1
28 }
29
30 trees=$(grep -v '^#' ../real_control | awk -F ' ' '{ printf("%s ", $3); }')
31
32 seen_ids=""
33 seen_heads=""
34 seen_sha1s=""
35
36 plog '%-20s %7s' "Tree" "commits"
37 [ "$prev" ] &&
38         plog ' %s' "since next-$prev"
39 plog '\n\n'
40
41 for t in $trees; do
42
43         [ "$t" = "origin" ] &&
44                 continue
45
46         [ "$prev" ] && {
47                 prev_num=$(egrep "^$t +[0-9]+" "../stats/next-$prev-summary")
48                 if [ "$prev_num" ]; then
49                         prev_num=$(expr "$prev_num" : "[^ ]*  *\([0-9]*\).*")
50                 else
51                         prev_num=0
52                 fi
53         }
54
55         h="refs/next/$d/$t"
56         git rev-parse --verify "$h" >/dev/null 2>&1 ||
57                 continue
58
59         mb=$(git merge-base origin/master $h)
60         rh=$(git rev-parse $h)
61         [ "$mb" = "$rh" ] && {
62                 plog '%-20s %7d' $t 0
63                 [ "$prev" ] &&
64                         plog ' %+7d' $((0 - prev_num))
65                 plog '\n'
66                 continue
67         }
68
69         c=$(git rev-list --no-merges $mb...$rh $seen_heads | sort)
70         seen_heads="$seen_heads ^$rh"
71         [ -z "$c" ] && {
72                 plog '%-20s %7d' $t 0
73                 [ "$prev" ] &&
74                         plog ' %+7d' $((0 - prev_num))
75                 plog '\n'
76                 continue
77         }
78
79 #       origin_ids=$(patch_ids $(git rev-list --no-merges $mb..origin/master))
80
81         is=$(patch_and_sha_ids $c)
82 #       is=$(join -v 1 <(echo "$is") <(echo "$origin_ids"))
83         is=$(echo "$is" | join -v 1 - "../stats/origin1-$d.ids")
84         is=$(join -v 1 <(echo "$is") <(echo "$seen_ids"))
85         c1=$(echo "$is" | cut -d' ' -f2)
86         [ "$is" ] &&
87                 seen_ids=$( (echo "$seen_ids"; echo "$is" | cut -d' ' -f1) | sort)
88
89         seen_sha1s="$seen_sha1s $c1"
90
91 #       log $t \($(echo "$c" | wc -w) $(echo "$c1" | wc -w)\)
92         num=$(echo "$c1" | wc -w)
93         plog '%-20s %7d' $t $num
94         [ "$prev" ] &&
95                 plog ' %+7d' $((num - prev_num))
96         plog '\n'
97 done
98
99 log
100 git shortlog --no-walk $seen_sha1s 2>&1 | tee -a $LOG_FILE
101
102 exit 0