module GitTeamStats

Constants

VERSION

Public Class Methods

collect_commits() click to toggle source
# File lib/git_team_stats.rb, line 35
def self.collect_commits
  unless @inspected

    @project[:parsers].each do |parser|
      parser.get_commits()
    end
  end
end
count_commits() click to toggle source
# File lib/git_team_stats.rb, line 25
def self.count_commits
  count = 0
  
  if !@inspected
    self.inspect_commits()
  end

  return @commits_in_detail.length
end
get_cache_file_name() click to toggle source
# File lib/git_team_stats.rb, line 128
def self.get_cache_file_name
  hash_str = ""
  @project[:parsers].each{ |parser|
    hash_str += parser.get_head_short_hash().to_s + "-"
  }

  return $project[:name].to_s + "-" + hash_str + @project[:start_date].to_s + '-' + @project[:end_date].to_s
end
get_cache_output() click to toggle source
# File lib/git_team_stats.rb, line 119
def self.get_cache_output
  return @commits_in_detail
end
inspect_commits() click to toggle source
# File lib/git_team_stats.rb, line 44
def self.inspect_commits
  unless @inspected

    self.collect_commits()

    @project[:parsers].each do |parser|
      @commits_in_detail += parser.get_commit_details()
    end

    @inspected = true
  end
end
load_from_cache(data) click to toggle source
# File lib/git_team_stats.rb, line 123
def self.load_from_cache(data)
  @commits_in_detail = data
  @inspected = true
end
start(project) click to toggle source
# File lib/git_team_stats.rb, line 10
def self.start(project)
  @project = project
  
  @commits_in_detail = []

  @project[:parsers] = []
  
  @project[:repos].each do |repo|
    @project[:parsers].push(
      GitParse.new(repo)
    )
  end

end
team_cumulative_stats() click to toggle source
# File lib/git_team_stats.rb, line 57
def self.team_cumulative_stats
  self.inspect_commits()
  
  team_cumulative = {
    :commits => 0,
    :lines => 0,
    :edits => 0,
    :file_types => {}
  }
  @commits_in_detail.each do |commit|
    team_cumulative[:commits] += 1
    team_cumulative[:lines] += commit[:lines]
    team_cumulative[:edits] += commit[:edits]

    commit[:file_types].each do |language, details|
      if team_cumulative[:file_types].key? language
        team_cumulative[:file_types][language][:lines] += details[:lines]
        team_cumulative[:file_types][language][:edits] += details[:edits]
      else
        team_cumulative[:file_types][language] = {
          :lines => details[:lines],
          :edits => details[:edits]
        }
      end
    end
  end

  return team_cumulative
end
user_cumulative_stats(user) click to toggle source
# File lib/git_team_stats.rb, line 87
def self.user_cumulative_stats(user)
  self.inspect_commits()
  
  user_cumulative = {
    :commits => 0,
    :lines => 0,
    :edits => 0,
    :file_types => {}
  }
  @commits_in_detail.each do |commit|
    if user[:aliases].any?{ |name| name == commit[:committer] }
      user_cumulative[:commits] += 1
      user_cumulative[:lines] += commit[:lines]
      user_cumulative[:edits] += commit[:edits]

      commit[:file_types].each do |language, details|
        if user_cumulative[:file_types].key? language
          user_cumulative[:file_types][language][:lines] += details[:lines]
          user_cumulative[:file_types][language][:edits] += details[:edits]
        else
          user_cumulative[:file_types][language] = {
            :lines => details[:lines],
            :edits => details[:edits]
          }
        end
      end
    end
  end

  return user_cumulative
end