diff --git a/app/views/repositories/stats.html.haml b/app/views/repositories/stats.html.haml index a0a9377d2f6..a93814a4777 100644 --- a/app/views/repositories/stats.html.haml +++ b/app/views/repositories/stats.html.haml @@ -2,12 +2,12 @@ .row .span5 %h4 - Stats for #{@project.root_ref}: + Stats: %p %b Total commits: %span= @stats.commits_count %p - %b Total files: + %b Total files in #{@project.root_ref}: %span= @stats.files_count %p %b Authors: @@ -30,10 +30,12 @@ :javascript $(function(){ var labels = [#{@graph.labels.to_json}]; + var commits = [#{@graph.commits.join(', ')}]; var r = Raphael('activity-chart'); r.text(160, 10, "Commit activity for last #{@graph.weeks} weeks").attr({ font: "13px sans-serif" }); r.barchart( 10, 10, 400, 160, - [[#{@graph.commits.join(', ')}]] + [commits], + {colors:["#456"]} ).label(labels, true); }) diff --git a/lib/gitlab/git_stats.rb b/lib/gitlab/git_stats.rb index 943748695e9..855bffb5dde 100644 --- a/lib/gitlab/git_stats.rb +++ b/lib/gitlab/git_stats.rb @@ -15,7 +15,8 @@ module Gitlab end def files_count - repo.git.sh("git ls-tree -r --name-only #{ref} | wc -l").first.to_i + args = [ref, '-r', '--name-only' ] + repo.git.run(nil, 'ls-tree', nil, {}, args).split("\n").count end def authors_count @@ -52,15 +53,11 @@ module Gitlab def build_graph n = 4 from, to = (Date.today - n.weeks), Date.today + args = ['--all', "--since=#{from.to_s(:date)}", '--format=%ad' ] + rev_list = repo.git.run(nil, 'rev-list', nil, {}, args).split("\n") - format = "--pretty=format:'%h|%at|%ai|%aE'" - commits_strings = repo.git.sh("git rev-list --since #{from.to_s(:date)} #{format} #{ref} | grep -v commit")[0].split("\n") - - commits_dates = commits_strings.map do |string| - data = string.split("|") - date = data[2] - Time.parse(date).to_date.to_s(:date) - end + commits_dates = rev_list.values_at(* rev_list.each_index.select {|i| i.odd?}) + commits_dates = commits_dates.map { |date_str| Time.parse(date_str).to_date.to_s(:date) } commits_per_day = from.upto(to).map do |day| commits_dates.count(day.to_date.to_s(:date))