|
|
@@ -81,6 +81,7 @@ class GitDataCollector(DataCollector):
|
|
81
|
81
|
|
|
82
|
82
|
self.activity_by_hour_of_day = {} # hour -> commits
|
|
83
|
83
|
self.activity_by_day_of_week = {} # day -> commits
|
|
|
84
|
+ self.activity_by_month_of_year = {} # month [1-12] -> commits
|
|
84
|
85
|
|
|
85
|
86
|
self.authors = {} # name -> {commits, first_commit_stamp, last_commit_stamp}
|
|
86
|
87
|
|
|
|
@@ -145,6 +146,13 @@ class GitDataCollector(DataCollector):
|
|
145
|
146
|
else:
|
|
146
|
147
|
self.activity_by_day_of_week[day] = 1
|
|
147
|
148
|
|
|
|
149
|
+ # month of year
|
|
|
150
|
+ month = date.month
|
|
|
151
|
+ if month in self.activity_by_month_of_year:
|
|
|
152
|
+ self.activity_by_month_of_year[month] += 1
|
|
|
153
|
+ else:
|
|
|
154
|
+ self.activity_by_month_of_year[month] = 1
|
|
|
155
|
+
|
|
148
|
156
|
# author stats
|
|
149
|
157
|
if author not in self.authors:
|
|
150
|
158
|
self.authors[author] = {}
|
|
|
@@ -331,6 +339,17 @@ class HTMLReportCreator(ReportCreator):
|
|
331
|
339
|
f.write('<img src="day_of_week.png" />')
|
|
332
|
340
|
fp.close()
|
|
333
|
341
|
|
|
|
342
|
+ # TODO Month of Year
|
|
|
343
|
+ f.write('\n<h2>Month of Year</h2>\n\n')
|
|
|
344
|
+ f.write('<div class="vtable"><table>')
|
|
|
345
|
+ f.write('<tr><th>Month</th><th>Commits (%)</th></tr>')
|
|
|
346
|
+ for mm in range(1, 13):
|
|
|
347
|
+ commits = 0
|
|
|
348
|
+ if mm in data.activity_by_month_of_year:
|
|
|
349
|
+ commits = data.activity_by_month_of_year[mm]
|
|
|
350
|
+ f.write('<tr><td>%d</td><td>%d (%.2f %%)</td></tr>' % (mm, commits, (100.0 * commits) / data.getTotalCommits()))
|
|
|
351
|
+ f.write('</table></div>')
|
|
|
352
|
+
|
|
334
|
353
|
# Commits by year/month
|
|
335
|
354
|
f.write('<h2>Commits by year/month</h2>')
|
|
336
|
355
|
f.write('<div class="vtable"><table><tr><th>Month</th><th>Commits</th></tr>')
|