Commit f0a6fbaa authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Improve Commits stats code

parent b28ab896
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
.row .row
.span5 .span5
%h4 %h4
Stats for #{@project.root_ref}: Stats:
%p %p
%b Total commits: %b Total commits:
%span= @stats.commits_count %span= @stats.commits_count
%p %p
%b Total files: %b Total files in #{@project.root_ref}:
%span= @stats.files_count %span= @stats.files_count
%p %p
%b Authors: %b Authors:
...@@ -30,10 +30,12 @@ ...@@ -30,10 +30,12 @@
:javascript :javascript
$(function(){ $(function(){
var labels = [#{@graph.labels.to_json}]; var labels = [#{@graph.labels.to_json}];
var commits = [#{@graph.commits.join(', ')}];
var r = Raphael('activity-chart'); var r = Raphael('activity-chart');
r.text(160, 10, "Commit activity for last #{@graph.weeks} weeks").attr({ font: "13px sans-serif" }); r.text(160, 10, "Commit activity for last #{@graph.weeks} weeks").attr({ font: "13px sans-serif" });
r.barchart( r.barchart(
10, 10, 400, 160, 10, 10, 400, 160,
[[#{@graph.commits.join(', ')}]] [commits],
{colors:["#456"]}
).label(labels, true); ).label(labels, true);
}) })
...@@ -15,7 +15,8 @@ module Gitlab ...@@ -15,7 +15,8 @@ module Gitlab
end end
def files_count 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 end
def authors_count def authors_count
...@@ -52,15 +53,11 @@ module Gitlab ...@@ -52,15 +53,11 @@ module Gitlab
def build_graph n = 4 def build_graph n = 4
from, to = (Date.today - n.weeks), Date.today 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_dates = rev_list.values_at(* rev_list.each_index.select {|i| i.odd?})
commits_strings = repo.git.sh("git rev-list --since #{from.to_s(:date)} #{format} #{ref} | grep -v commit")[0].split("\n") commits_dates = commits_dates.map { |date_str| Time.parse(date_str).to_date.to_s(:date) }
commits_dates = commits_strings.map do |string|
data = string.split("|")
date = data[2]
Time.parse(date).to_date.to_s(:date)
end
commits_per_day = from.upto(to).map do |day| commits_per_day = from.upto(to).map do |day|
commits_dates.count(day.to_date.to_s(:date)) commits_dates.count(day.to_date.to_s(:date))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment