From f07346425127fd3c1844103f2c26a3865a7969bc Mon Sep 17 00:00:00 2001 From: Tomasz Gieniusz Date: Mon, 8 Oct 2012 20:22:18 +0200 Subject: [PATCH] activity stats --- lib/git_stats/generator.rb | 6 +++--- lib/git_stats/git_data/git_activity.rb | 13 +++++++++++++ lib/git_stats/{ => git_data}/git_author.rb | 0 lib/git_stats/{ => git_data}/git_commit.rb | 0 lib/git_stats/{ => git_data}/git_data.rb | 19 +++++++++++++++++-- lib/git_stats/{ => template}/assets.rb | 0 lib/git_stats/{ => template}/template.rb | 0 7 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 lib/git_stats/git_data/git_activity.rb rename lib/git_stats/{ => git_data}/git_author.rb (100%) rename lib/git_stats/{ => git_data}/git_commit.rb (100%) rename lib/git_stats/{ => git_data}/git_data.rb (74%) rename lib/git_stats/{ => template}/assets.rb (100%) rename lib/git_stats/{ => template}/template.rb (100%) diff --git a/lib/git_stats/generator.rb b/lib/git_stats/generator.rb index 33e5b3101..74a709957 100644 --- a/lib/git_stats/generator.rb +++ b/lib/git_stats/generator.rb @@ -1,6 +1,6 @@ -require 'git_stats/git_data' -require 'git_stats/assets' -require 'git_stats/template' +require 'git_stats/git_data/git_data' +require 'git_stats/template/assets' +require 'git_stats/template/template' class GitStats::Generator def initialize(repo_path, out_path) diff --git a/lib/git_stats/git_data/git_activity.rb b/lib/git_stats/git_data/git_activity.rb new file mode 100644 index 000000000..d3f856e6f --- /dev/null +++ b/lib/git_stats/git_data/git_activity.rb @@ -0,0 +1,13 @@ +class GitStats::GitActivity + def by_hour + @by_hour ||= Hash.new(0) + end + + def by_wday + @by_wday ||= Hash.new(0) + end + + def by_wday_hour + @by_wday_hour ||= Hash.new { |h, k| h[k] = Hash.new(0) } + end +end \ No newline at end of file diff --git a/lib/git_stats/git_author.rb b/lib/git_stats/git_data/git_author.rb similarity index 100% rename from lib/git_stats/git_author.rb rename to lib/git_stats/git_data/git_author.rb diff --git a/lib/git_stats/git_commit.rb b/lib/git_stats/git_data/git_commit.rb similarity index 100% rename from lib/git_stats/git_commit.rb rename to lib/git_stats/git_data/git_commit.rb diff --git a/lib/git_stats/git_data.rb b/lib/git_stats/git_data/git_data.rb similarity index 74% rename from lib/git_stats/git_data.rb rename to lib/git_stats/git_data/git_data.rb index f9d8c3b57..ccd21619f 100644 --- a/lib/git_stats/git_data.rb +++ b/lib/git_stats/git_data/git_data.rb @@ -1,6 +1,7 @@ require 'pathname' -require 'git_stats/git_author' -require 'git_stats/git_commit' +require 'git_stats/git_data/git_activity' +require 'git_stats/git_data/git_author' +require 'git_stats/git_data/git_commit' class GitStats::GitData attr_reader :total_authors @@ -19,10 +20,20 @@ class GitStats::GitData def gather_commit_data run('git rev-list --pretty=format:"%h|%at|%ai|%aN|%aE" HEAD | grep -v commit').split(/\r?\n/).each do |commit| hash, stamp, date, author_name, author_email = commit.split('|') + authors[author_email] = GitStats::GitAuthor.new(name: author_name, email: author_email) unless authors[author_email] author = authors[author_email] + + date = DateTime.parse(date) commits[hash] = GitStats::GitCommit.new(hash: hash, stamp: stamp, date: date, author: author) + + activity.by_hour[date.hour] += 1 + activity.by_wday[date.wday] += 1 + activity.by_wday_hour[date.wday][date.hour] += 1 end + + require 'pry' + binding.pry end def authors @@ -33,6 +44,10 @@ class GitStats::GitData @commits ||= {} end + def activity + @activity ||= GitStats::GitActivity.new + end + def project_version @project_version ||= run('git rev-parse --short HEAD') end diff --git a/lib/git_stats/assets.rb b/lib/git_stats/template/assets.rb similarity index 100% rename from lib/git_stats/assets.rb rename to lib/git_stats/template/assets.rb diff --git a/lib/git_stats/template.rb b/lib/git_stats/template/template.rb similarity index 100% rename from lib/git_stats/template.rb rename to lib/git_stats/template/template.rb