Browse Source

Activity: added 'Commits by Timezone'.

Heikki Hokkanen 16 years ago
parent
commit
8542a238e2
1 changed files with 20 additions and 2 deletions
  1. 20
    2
      gitstats

+ 20
- 2
gitstats View File

174
 		self.last_active_day = None
174
 		self.last_active_day = None
175
 		self.active_days = 0
175
 		self.active_days = 0
176
 
176
 
177
+		# timezone
178
+		self.commits_by_timezone = {} # timezone -> commits
179
+
177
 		# tags
180
 		# tags
178
 		self.tags = {}
181
 		self.tags = {}
179
 		lines = getpipeoutput(['git show-ref --tags']).split('\n')
182
 		lines = getpipeoutput(['git show-ref --tags']).split('\n')
213
 
216
 
214
 		# Collect revision statistics
217
 		# Collect revision statistics
215
 		# Outputs "<stamp> <author>"
218
 		# Outputs "<stamp> <author>"
216
-		lines = getpipeoutput(['git rev-list --pretty=format:"%at %an" HEAD', 'grep -v ^commit']).split('\n')
219
+		lines = getpipeoutput(['git rev-list --pretty=format:"%at %ai %an" HEAD', 'grep -v ^commit']).split('\n')
217
 		for line in lines:
220
 		for line in lines:
218
 			# linux-2.6 says "<unknown>" for one line O_o
221
 			# linux-2.6 says "<unknown>" for one line O_o
219
 			parts = line.split(' ')
222
 			parts = line.split(' ')
222
 				stamp = int(parts[0])
225
 				stamp = int(parts[0])
223
 			except ValueError:
226
 			except ValueError:
224
 				stamp = 0
227
 				stamp = 0
225
-			if len(parts) > 1:
228
+			timezone = parts[3]
229
+			if len(parts) > 4:
226
 				author = ' '.join(parts[1:])
230
 				author = ' '.join(parts[1:])
227
 			date = datetime.datetime.fromtimestamp(float(stamp))
231
 			date = datetime.datetime.fromtimestamp(float(stamp))
228
 
232
 
331
 				self.last_active_day = yymmdd
335
 				self.last_active_day = yymmdd
332
 				self.active_days += 1
336
 				self.active_days += 1
333
 
337
 
338
+			# timezone
339
+			self.commits_by_timezone[timezone] = self.commits_by_timezone.get(timezone, 0) + 1
340
+
334
 		# TODO Optimize this, it's the worst bottleneck
341
 		# TODO Optimize this, it's the worst bottleneck
335
 		# outputs "<stamp> <files>" for each revision
342
 		# outputs "<stamp> <files>" for each revision
336
 		self.files_by_stamp = {} # stamp -> files
343
 		self.files_by_stamp = {} # stamp -> files
713
 			fg.write('%d %d\n' % (yy, data.commits_by_year[yy]))
720
 			fg.write('%d %d\n' % (yy, data.commits_by_year[yy]))
714
 		fg.close()
721
 		fg.close()
715
 
722
 
723
+		# Commits by timezone
724
+		f.write(html_header(2, 'Commits by Timezone'))
725
+		f.write('<table><tr>')
726
+		f.write('<th>Timezone</th><th>Commits</th>')
727
+		max_commits_on_tz = max(data.commits_by_timezone.values())
728
+		for i in sorted(data.commits_by_timezone.keys(), key = lambda n : int(n)):
729
+			commits = data.commits_by_timezone[i]
730
+			r = 127 + int((float(commits) / max_commits_on_tz) * 128)
731
+			f.write('<tr><th>%s</th><td style="background-color: rgb(%d, 0, 0)">%d</td></tr>' % (i, r, commits))
732
+		f.write('</tr></table>')
733
+
716
 		f.write('</body></html>')
734
 		f.write('</body></html>')
717
 		f.close()
735
 		f.close()
718
 
736