From 1940f0cc3c5b24c51b2d3e88d6a60751cded8bcf Mon Sep 17 00:00:00 2001 From: Heikki Hokkanen Date: Thu, 2 Aug 2007 16:19:00 +0300 Subject: [PATCH] Activity: Hour of Day. --- statgit | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 75 insertions(+), 7 deletions(-) diff --git a/statgit b/statgit index f417204..1e9fce5 100755 --- a/statgit +++ b/statgit @@ -26,6 +26,9 @@ class DataCollector: def getAuthorInfo(self, author): return None + def getActivityByHourOfDay(self): + return {} + ## # Get a list of authors def getAuthors(self): @@ -60,7 +63,33 @@ class GitDataCollector(DataCollector): self.total_commits = int(getoutput('git-rev-list --all |wc -l')) self.total_files = int(getoutput('git-ls-files |wc -l')) self.total_lines = int(getoutput('git-ls-files |xargs cat |wc -l')) + + self.activity_by_hour_of_day = {} # hour -> commits + self.activity_by_day_of_week = {} # day -> commits + + # activity + lines = getoutput('git-rev-list --all --pretty=format:%at |grep -v ^commit').split('\n') + for stamp in lines: + date = datetime.datetime.fromtimestamp(float(stamp)) + + # hour + hour = date.hour + if hour in self.activity_by_hour_of_day: + self.activity_by_hour_of_day[hour] += 1 + else: + self.activity_by_hour_of_day[hour] = 1 + + # day + day = date.weekday() + if day in self.activity_by_day_of_week: + self.activity_by_day_of_week[day] += 1 + else: + self.activity_by_day_of_week[day] = 1 + + def getActivityByHourOfDay(self): + return self.activity_by_hour_of_day + def getAuthorInfo(self, author): commits = int(getoutput('git-rev-list --all --author="%s" |wc -l' % author)) commits_frac = (100 * float(commits)) / self.getTotalCommits() @@ -114,14 +143,8 @@ class HTMLReportCreator(ReportCreator): ReportCreator.create(self, data, path) f = open(path + "/index.html", 'w') - f.write(""" - - StatGit - - - -""") format = '%Y-%m-%d %H:%m:%S' + self.printHeader(f) f.write('

StatGit

') @@ -138,6 +161,7 @@ class HTMLReportCreator(ReportCreator):
  • Activity
  • Authors
  • Files
  • +
  • Lines
  • """) @@ -159,8 +183,52 @@ class HTMLReportCreator(ReportCreator): f.write('\n'); f.close() + + # activity.html + f = open(path + '/activity.html', 'w') + self.printHeader(f) + f.write('

    Activity

    ') + + f.write('

    Last 30 days

    ') + + f.write('

    Last 12 months

    ') + + f.write('\n

    Hour of Day

    \n\n') + hour_of_day = data.getActivityByHourOfDay() + f.write('') + for i in range(1, 25): + f.write('' % i) + f.write('\n') + for i in range(1, 25): + if i in hour_of_day: + f.write('' % hour_of_day[i]) + else: + f.write('') + f.write('\n') + totalcommits = data.getTotalCommits() + for i in range(1, 25): + if i in hour_of_day: + f.write('' % ((100.0 * hour_of_day[i]) / totalcommits)) + else: + f.write('') + f.write('
    Hour%d
    Commits%d0
    %%.2f0.00
    ') + + f.write('\n\n

    Day of Week

    ') + # TODO 7x(24+1) + + f.close() pass + def printHeader(self, f): + f.write(""" + + StatGit + + + +""") + + usage = """ Usage: statgit [options] -- 2.11.4.GIT