]> git.ozlabs.org Git - next-scripts/blob - do_stats
updates
[next-scripts] / do_stats
1 #!/bin/bash
2
3 base=$1
4 next=$2
5 rc=$3
6
7 sd=../stats
8
9 [ -d $sd ] || mkdir $sd || {
10         echo "No stats dir" 1>&2
11         exit 1
12 }
13
14 git rev-list --no-merges $base..$next | sort >$sd/$next.sha1s
15 git rev-list --no-merges $base..$rc | sort >$sd/$rc.sha1s
16
17 # filter out the common commits
18 comm -12 $sd/$next.sha1s $sd/$rc.sha1s >$sd/common_sha1s
19 comm -23 $sd/$next.sha1s $sd/$rc.sha1s >$sd/$next.sha1s.1
20 comm -13 $sd/$next.sha1s $sd/$rc.sha1s >$sd/$rc.sha1s.1
21
22 # now find commits with the same patch-id
23 git diff-tree -p --stdin <$sd/$next.sha1s.1 |
24         git patch-id |
25         sort >$sd/$next.patch_ids
26 git diff-tree -p --stdin <$sd/$rc.sha1s.1 |
27         git patch-id |
28         sort >$sd/$rc.patch_ids
29 join -j 1 $sd/$next.patch_ids $sd/$rc.patch_ids >$sd/common_id
30 join -v 1 -j 1 $sd/$next.patch_ids $sd/$rc.patch_ids |
31         sed 's/^.* //' >$sd/$next.sha1s.2
32 join -v 2 -j 1 $sd/$next.patch_ids $sd/$rc.patch_ids |
33         sed 's/^.* //' >$sd/$rc.sha1s.2
34
35 # now find commits with the same subject line
36 git log --stdin --no-walk --format='%s|%H' <$sd/$next.sha1s.2 |
37         sed 's/|\(.*\)|/_\1|/g' |
38         sort -f -k 1,1 -t '|' >$sd/$next.subj
39 git log --stdin --no-walk --format='%s|%H' <$sd/$rc.sha1s.2 |
40         sed 's/|\(.*\)|/_\1|/g' |
41         sort -f -k 1,1 -t '|' >$sd/$rc.subj
42 join -i -j 1 -t '|' $sd/$next.subj $sd/$rc.subj >$sd/common_subj
43 join -v 1 -i -j 1 -t '|' $sd/$next.subj $sd/$rc.subj |
44         sed 's/^.*|//' >$sd/$next.sha1s.3
45 join -v 2 -i -j 1 -t '|' $sd/$next.subj $sd/$rc.subj |
46         sed 's/^.*|//' >$sd/$rc.sha1s.3