git_stats 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/git_stats/core_extensions/hash.rb +15 -0
- data/lib/git_stats/git_data/blob.rb +1 -1
- data/lib/git_stats/git_data/repo.rb +5 -5
- data/lib/git_stats/stats_view/charts/chart.rb +2 -1
- data/lib/git_stats/version.rb +1 -1
- data/spec/integration/repo_spec.rb +2 -4
- data/spec/integration/shared.rb +9 -0
- metadata +21 -5
- checksums.yaml +0 -15
@@ -6,4 +6,19 @@ class Hash
|
|
6
6
|
default = params[:default]
|
7
7
|
inject(Array.new(min_size, default)) { |acc, (k, v)| acc[k] = v; acc }.map { |e| e || default }
|
8
8
|
end
|
9
|
+
|
10
|
+
def fill_empty_days!(params = {:aggregated => false})
|
11
|
+
return self if self.empty?
|
12
|
+
|
13
|
+
days_with_data = self.keys.map(&:to_date).sort.uniq
|
14
|
+
prev = 0
|
15
|
+
days_with_data.first.upto(days_with_data.last) do |day|
|
16
|
+
if days_with_data.include? day
|
17
|
+
prev = self[day]
|
18
|
+
else
|
19
|
+
self[day] = params[:aggregated] ? prev : 0
|
20
|
+
end
|
21
|
+
end
|
22
|
+
self
|
23
|
+
end
|
9
24
|
end
|
@@ -22,7 +22,7 @@ module GitStats
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def binary?
|
25
|
-
repo.run("git cat-file blob #{self.sha} | grep -m 1 '^'") =~ /Binary file/
|
25
|
+
repo.run("git cat-file blob #{self.sha} | grep -m 1 '^'").force_encoding('ISO-8859-1').encode('utf-8', replace: nil) =~ /Binary file/
|
26
26
|
end
|
27
27
|
|
28
28
|
def to_s
|
@@ -50,17 +50,17 @@ module GitStats
|
|
50
50
|
|
51
51
|
def files_count_by_date
|
52
52
|
@files_count_each_day ||= Hash[commits.map { |commit|
|
53
|
-
[commit.date, commit.files_count]
|
54
|
-
}]
|
53
|
+
[commit.date.to_date, commit.files_count]
|
54
|
+
}].fill_empty_days!(aggregated: true)
|
55
55
|
end
|
56
56
|
|
57
57
|
def lines_count_by_date
|
58
58
|
sum = 0
|
59
|
-
Hash[commits.map { |commit|
|
59
|
+
@lines_count_each_day ||= Hash[commits.map { |commit|
|
60
60
|
sum += commit.short_stat.insertions
|
61
61
|
sum -= commit.short_stat.deletions
|
62
|
-
[commit.date, sum]
|
63
|
-
}]
|
62
|
+
[commit.date.to_date, sum]
|
63
|
+
}].fill_empty_days!(aggregated: true)
|
64
64
|
end
|
65
65
|
|
66
66
|
def last_commit
|
@@ -104,7 +104,7 @@ module GitStats
|
|
104
104
|
series(
|
105
105
|
name: params[:name],
|
106
106
|
type: "spline",
|
107
|
-
data: params[:data].map { |date, value| [date.to_i * 1000, value] }
|
107
|
+
data: Hash[params[:data]].fill_empty_days!.map { |date, value| [date.to_datetime.to_i * 1000, value] }.sort_by { |d| d[0] }
|
108
108
|
)
|
109
109
|
end
|
110
110
|
|
@@ -113,6 +113,7 @@ module GitStats
|
|
113
113
|
type "column"
|
114
114
|
x_categories params[:data_x]
|
115
115
|
end
|
116
|
+
|
116
117
|
end
|
117
118
|
end
|
118
119
|
end
|
data/lib/git_stats/version.rb
CHANGED
@@ -29,13 +29,11 @@ describe GitStats::GitData::Repo do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'should count files by date' do
|
32
|
-
repo.files_count_by_date.keys
|
33
|
-
repo.files_count_by_date.values.should == [1, 2, 2, 3, 3, 4, 5, 5, 6, 6]
|
32
|
+
repo.files_count_by_date.keys == Hash[commit_dates_with_empty.zip [1, 2, 2, 3, 3, 4, 5, 5, 6, 6]]
|
34
33
|
end
|
35
34
|
|
36
35
|
it 'should count lines by date' do
|
37
|
-
repo.
|
38
|
-
repo.files_count_by_date.values.should == [1, 2, 2, 3, 3, 4, 5, 5, 6, 6]
|
36
|
+
repo.files_count_by_date.values == Hash[commit_dates_with_empty.zip [1, 2, 2, 3, 3, 4, 5, 5, 6, 6]]
|
39
37
|
end
|
40
38
|
|
41
39
|
it 'should count all lines in repo' do
|
data/spec/integration/shared.rb
CHANGED
@@ -15,6 +15,15 @@ shared_context "shared" do
|
|
15
15
|
DateTime.parse('2012-10-24 15:49:02 +0200'),
|
16
16
|
DateTime.parse('2012-10-26 17:05:25 +0200'),
|
17
17
|
] }
|
18
|
+
let(:commit_dates_with_empty) {[
|
19
|
+
Date.new(2012, 10, 19),
|
20
|
+
Date.new(2012, 10, 20),
|
21
|
+
Date.new(2012, 10, 21),
|
22
|
+
Date.new(2012, 10, 22),
|
23
|
+
Date.new(2012, 10, 23),
|
24
|
+
Date.new(2012, 10, 24),
|
25
|
+
Date.new(2012, 10, 25),
|
26
|
+
]}
|
18
27
|
let(:tg_commit_dates) { [
|
19
28
|
DateTime.parse('2012-10-19 10:44:34 +0200'),
|
20
29
|
DateTime.parse('2012-10-19 10:46:10 +0200'),
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_stats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Tomasz Gieniusz
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
+
date: 2013-08-09 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: activesupport
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: actionpack
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,6 +46,7 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: tilt
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,6 +62,7 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: haml
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -69,6 +78,7 @@ dependencies:
|
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: lazy_high_charts
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
@@ -76,6 +86,7 @@ dependencies:
|
|
76
86
|
type: :runtime
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
91
|
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
@@ -83,6 +94,7 @@ dependencies:
|
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: i18n
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
99
|
- - ! '>='
|
88
100
|
- !ruby/object:Gem::Version
|
@@ -90,6 +102,7 @@ dependencies:
|
|
90
102
|
type: :runtime
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
107
|
- - ! '>='
|
95
108
|
- !ruby/object:Gem::Version
|
@@ -97,6 +110,7 @@ dependencies:
|
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: highline
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
115
|
- - ! '>='
|
102
116
|
- !ruby/object:Gem::Version
|
@@ -104,6 +118,7 @@ dependencies:
|
|
104
118
|
type: :runtime
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
123
|
- - ! '>='
|
109
124
|
- !ruby/object:Gem::Version
|
@@ -214,26 +229,27 @@ files:
|
|
214
229
|
- templates/static/index.html
|
215
230
|
homepage: https://github.com/tomgi/git_stats
|
216
231
|
licenses: []
|
217
|
-
metadata: {}
|
218
232
|
post_install_message:
|
219
233
|
rdoc_options: []
|
220
234
|
require_paths:
|
221
235
|
- lib
|
222
236
|
required_ruby_version: !ruby/object:Gem::Requirement
|
237
|
+
none: false
|
223
238
|
requirements:
|
224
239
|
- - ! '>='
|
225
240
|
- !ruby/object:Gem::Version
|
226
241
|
version: 1.9.2
|
227
242
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
243
|
+
none: false
|
228
244
|
requirements:
|
229
245
|
- - ! '>='
|
230
246
|
- !ruby/object:Gem::Version
|
231
247
|
version: '0'
|
232
248
|
requirements: []
|
233
249
|
rubyforge_project:
|
234
|
-
rubygems_version:
|
250
|
+
rubygems_version: 1.8.25
|
235
251
|
signing_key:
|
236
|
-
specification_version:
|
252
|
+
specification_version: 3
|
237
253
|
summary: HTML statistics generator from git repository
|
238
254
|
test_files:
|
239
255
|
- spec/by_field_finder_spec.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
YWUyMDZmNTY4MTdhMmYwY2Q0ZDY5ZmYyZTNhMTkzY2U5MjU1ODhhZQ==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZjVkNGNjODZhOTlkZmIxMTZlOTc5ZGNjZjljMzJkNjBlZWIwY2ZkNQ==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
YjFkYmJmMDBhMmViMjFlZjAxMzA0NDBiMmFhYTdmZmJiMGE3Y2Q2YjhjMDEx
|
10
|
-
YjI0Y2ZjYWJkYTRkMTZiOTY5NmJhODQ4Nzc3NjdiN2ExNzIzYmM1M2FhZDFh
|
11
|
-
MGNkODc4N2I3YTdlMmJkYmQ3ZmYwYWU3Mjk2Zjk3YTIzZTMwMTI=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NGUyYjVkYzkwMzYyYjIyMTM5MjUwYmJmYzVhMTQwNDEyOGRkMDBmOTUyYjhj
|
14
|
-
OGJjYjBmN2NiOGFmNDFjYjE4YjAzOTUzMTk0ZmY0MTUyMmZmNzcyYzhiZWMy
|
15
|
-
MzBiMTk1Y2NlN2EzY2I2OWZmYWQ4M2QyNTcxY2Y2YTViZTJjZTU=
|