git_stats 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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=
|