4 # Go munging through changelogs for interesting info.
6 # git log <whatever> | changelogs
15 SingleSSCulprits = { }
18 def LogEmptyCulprit(culprit):
20 EmptyCulprits[culprit] += 1
22 EmptyCulprits[culprit] = 1
24 def LogSSCulprit(culprit):
26 SingleSSCulprits[culprit] += 1
28 SingleSSCulprits[culprit] = 1
30 def LogNoSOBCulprit(culprit):
32 NoSOBCulprits[culprit] += 1
34 NoSOBCulprits[culprit] = 1
36 def SortedCulprits(culprits):
38 return culprits[c2] - culprits[c1]
39 names = culprits.keys()
43 def PrintCulprits(culprits, sorted):
45 print '\t%30s: %d' % (name, culprits[name])
54 LogSSCulprit(p.author.name)
56 SSPatches[p.author.name].append(p)
58 SSPatches[p.author.name] = [p]
61 LogEmptyCulprit(p.author.name)
63 EmptyCLPatches[p.author.name].append(p)
65 EmptyCLPatches[p.author.name] = [p]
68 LogNoSOBCulprit(p.author.name)
70 NoSOBPatches[p.author.name].append(p)
72 NoSOBPatches[p.author.name] = [p]
74 LinusURL = 'http://git.kernel.org/linus/'
75 def WritePatches(names, patches, file):
78 out.write('<h4>%s</h4>\n<ul>\n' % name)
79 for p in patches[name]:
80 out.write('\t<li><a href="%s%s"><tt>%s</tt></a> %s\n' % (LinusURL,
84 out.write('</ul>\n\n')
97 p = gitlog.grabpatch(sys.stdin)
99 #print p.commit, len(p.changelog)
101 if len(p.changelog) == 0:
104 if len(p.signoffs) == 0:
107 elif len(p.signoffs) == 1:
113 p = gitlog.grabpatch(sys.stdin)
115 print '%d patches, %d w/o changelog' % (Npatches, NemptyCL)
116 print ' %d w/o signoff, %d w/1 signoff, %d no others, %d SS culprits' % \
117 (Nnosob, Nsinglesob, Nsinglesob - Nothers, len(SingleSSCulprits))
118 print '\nMost single signoffs:'
119 sorted = SortedCulprits(SingleSSCulprits)[:20]
120 PrintCulprits(SingleSSCulprits, sorted)
121 WritePatches(sorted, SSPatches, 'sspatches.html')
123 print '\nMost empty changelogs:'
124 sorted = SortedCulprits(EmptyCulprits)[:20]
125 PrintCulprits(EmptyCulprits, sorted)
126 WritePatches(sorted, EmptyCLPatches, 'emptypatches.html')
129 sorted = SortedCulprits(NoSOBCulprits)
130 PrintCulprits(NoSOBCulprits, sorted)
131 WritePatches(sorted, NoSOBPatches, 'nosobpatches.html')