git_statistics 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/git-statistics +5 -0
- data/lib/git_statistics/collector.rb +3 -3
- data/lib/git_statistics/commit_line_extractor.rb +16 -30
- data/lib/git_statistics/core_ext/string.rb +11 -0
- data/lib/git_statistics/formatters/console.rb +95 -0
- data/lib/git_statistics/initialize.rb +5 -8
- data/lib/git_statistics/regex_matcher.rb +23 -0
- data/lib/git_statistics/utilities.rb +1 -1
- data/lib/git_statistics/version.rb +1 -1
- data/lib/git_statistics.rb +1 -1
- data/spec/collector_spec.rb +2 -2
- data/spec/commits_spec.rb +1 -1
- data/spec/{results_spec.rb → formatters/console_spec.rb} +4 -3
- data/spec/regex_matcher_spec.rb +35 -0
- data/spec/utilities_spec.rb +6 -3
- metadata +13 -43
- data/.gitignore +0 -24
- data/.travis.yml +0 -14
- data/CHANGELOG.md +0 -9
- data/Gemfile +0 -23
- data/Gemfile.lock +0 -67
- data/Guardfile +0 -7
- data/LICENSE +0 -19
- data/README.md +0 -44
- data/Rakefile +0 -14
- data/git_statistics.gemspec +0 -23
- data/lib/git_statistics/results.rb +0 -94
- data/spec/fixtures/commit_buffer_changes.txt +0 -9
- data/spec/fixtures/commit_buffer_information.txt +0 -1
- data/spec/fixtures/commit_buffer_information_first.txt +0 -1
- data/spec/fixtures/commit_buffer_information_with_merge.txt +0 -1
- data/spec/fixtures/commit_buffer_whole.txt +0 -6
- data/spec/fixtures/git_many_branches.txt +0 -2
- data/spec/fixtures/git_zero_branches.txt +0 -1
- data/spec/fixtures/header_output.txt +0 -4
- data/spec/fixtures/language_data_output.txt +0 -2
- data/spec/fixtures/multiple_authors.json +0 -1
- data/spec/fixtures/single_author_pretty.json +0 -79
- data/spec/fixtures/summary_output.txt +0 -17
- data/spec/spec_helper.rb +0 -17
data/bin/git-statistics
ADDED
@@ -31,7 +31,7 @@ module GitStatistics
|
|
31
31
|
buffer = []
|
32
32
|
pipe.each do |line|
|
33
33
|
|
34
|
-
line =
|
34
|
+
line = line.clean_for_authors
|
35
35
|
|
36
36
|
# Extract the buffer (commit) when we match ','x5 in the log format (delimeter)
|
37
37
|
if line.split(',').size == 5
|
@@ -61,7 +61,7 @@ module GitStatistics
|
|
61
61
|
" --no-color --find-copies-harder --numstat --encoding=utf-8 "\
|
62
62
|
"--summary --format=\"%H,%an,%ae,%ad,%p\"")
|
63
63
|
|
64
|
-
buffer = pipe.map { |line|
|
64
|
+
buffer = pipe.map { |line| line.clean_for_authors }
|
65
65
|
|
66
66
|
# Check that the buffer has valid information (i.e., sha was valid)
|
67
67
|
if !buffer.empty? && buffer.first.split(',').first == sha
|
@@ -78,7 +78,7 @@ module GitStatistics
|
|
78
78
|
|
79
79
|
# Remove the '*' leading the current branch
|
80
80
|
line = line[1..-1] if line[0] == '*'
|
81
|
-
branches <<
|
81
|
+
branches << line.clean_for_authors
|
82
82
|
end
|
83
83
|
|
84
84
|
return branches
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module GitStatistics
|
2
2
|
class CommitLineExtractor
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
AdditionsOrDeletions = RegexMatcher.new(/^([-|\d]+)\s+([-|\d]+)\s+(.+)/i, 3)
|
5
|
+
RenamedOrCopied = RegexMatcher.new(/^(rename|copy)\s+(.+)\s+=>\s+(.+)\s+\((\d+)/i, 4)
|
6
|
+
CreatedOrDeleted = RegexMatcher.new(/^(create|delete) mode \d+ ([^\\\n]*)/i, 2)
|
7
|
+
ModifiedOrRenamed = RegexMatcher.new(/^([-|\d]+)\s+([-|\d]+)\s+(.+)\s+=>\s+(.+)/i, 4)
|
8
8
|
|
9
9
|
attr_reader :line
|
10
10
|
|
@@ -13,52 +13,38 @@ module GitStatistics
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def changed
|
16
|
-
modified_or_renamed =
|
17
|
-
modified_or_renamed = changes_are_right_size(modified_or_renamed, 4) do |changes|
|
16
|
+
modified_or_renamed = ModifiedOrRenamed.if_matches(line) do |changes|
|
18
17
|
split_file = Utilities.split_old_new_file(changes[2], changes[3])
|
19
18
|
{:additions => changes[0].to_i,
|
20
19
|
:deletions => changes[1].to_i,
|
21
|
-
:file =>
|
22
|
-
:old_file =>
|
20
|
+
:file => split_file[:new_file].clean_for_authors,
|
21
|
+
:old_file => split_file[:old_file].clean_for_authors}
|
23
22
|
end
|
24
23
|
return modified_or_renamed unless modified_or_renamed.empty?
|
25
24
|
|
26
|
-
|
27
|
-
changes_are_right_size(addition_or_deletion, 3) do |changes|
|
25
|
+
AdditionsOrDeletions.if_matches(line) do |changes|
|
28
26
|
{:additions => changes[0].to_i,
|
29
27
|
:deletions => changes[1].to_i,
|
30
|
-
:file =>
|
28
|
+
:file => changes[2].clean_for_authors}
|
31
29
|
end
|
32
30
|
end
|
33
31
|
|
34
32
|
def created_or_deleted
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
:file => Utilities.clean_string(changes[1])}
|
33
|
+
CreatedOrDeleted.if_matches(line) do |changes|
|
34
|
+
{:status => changes[0].clean_for_authors,
|
35
|
+
:file => changes[1].clean_for_authors}
|
39
36
|
end
|
40
37
|
end
|
41
38
|
|
42
39
|
def renamed_or_copied
|
43
|
-
|
44
|
-
changes_are_right_size(changes, 4) do |changes|
|
40
|
+
RenamedOrCopied.if_matches(line) do |changes|
|
45
41
|
split_file = Utilities.split_old_new_file(changes[1], changes[2])
|
46
|
-
{:status =>
|
47
|
-
:old_file =>
|
48
|
-
:new_file =>
|
42
|
+
{:status => changes[0].clean_for_authors,
|
43
|
+
:old_file => split_file[:old_file].clean_for_authors,
|
44
|
+
:new_file => split_file[:new_file].clean_for_authors,
|
49
45
|
:similar => changes[3].to_i}
|
50
46
|
end
|
51
47
|
end
|
52
48
|
|
53
|
-
private
|
54
|
-
|
55
|
-
def changes_are_right_size(changes, size = 4)
|
56
|
-
if !changes.nil? && changes.size == size
|
57
|
-
yield changes
|
58
|
-
else
|
59
|
-
{}
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
49
|
end
|
64
50
|
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
module GitStatistics
|
2
|
+
module Formatters
|
3
|
+
class Console
|
4
|
+
|
5
|
+
attr_accessor :commits
|
6
|
+
|
7
|
+
def initialize(commits)
|
8
|
+
@commits = commits
|
9
|
+
end
|
10
|
+
|
11
|
+
def prepare_result_summary(sort, email, top_n = 0)
|
12
|
+
# Default to a 0 if given a negative number to display
|
13
|
+
top_n = 0 if top_n < 0
|
14
|
+
|
15
|
+
# Acquire data based on sort type and top # to show
|
16
|
+
data = @commits.author_top_n_type(sort.to_sym, top_n)
|
17
|
+
raise "Parameter for --sort is not valid" if data.nil?
|
18
|
+
|
19
|
+
# Create config
|
20
|
+
config = {:data => data,
|
21
|
+
:author_length => Utilities.max_length_in_list(data.keys, 17),
|
22
|
+
:language_length => Utilities.max_length_in_list(@commits.totals[:languages].keys, 8),
|
23
|
+
:sort => sort,
|
24
|
+
:email => email,
|
25
|
+
:top_n => top_n}
|
26
|
+
|
27
|
+
# Acquire formatting pattern for output
|
28
|
+
pattern = "%-#{config[:author_length]}s | %-#{config[:language_length]}s | %7s | %9s | %9s | %7s | %7s | %7s | %6s | %6s |"
|
29
|
+
config[:pattern] = pattern
|
30
|
+
return config
|
31
|
+
end
|
32
|
+
|
33
|
+
def print_summary(sort, email, top_n = 0)
|
34
|
+
# Prepare and determine the config for the result summary based on parameters
|
35
|
+
config = prepare_result_summary(sort, email, top_n)
|
36
|
+
|
37
|
+
# Print query/header information
|
38
|
+
output = print_header(config)
|
39
|
+
|
40
|
+
# Print per author information
|
41
|
+
config[:data].each do |key,value|
|
42
|
+
output += config[:pattern] % [key, "", value[:commits], value[:additions],
|
43
|
+
value[:deletions], value[:create], value[:delete],
|
44
|
+
value[:rename], value[:copy], value[:merges]]
|
45
|
+
output += "\n"
|
46
|
+
output += print_language_data(config[:pattern], value)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Reprint query/header for repository information
|
50
|
+
output += "\n"
|
51
|
+
output += print_header(config)
|
52
|
+
data = @commits.totals
|
53
|
+
output += config[:pattern] % ["Repository Totals", "", data[:commits],
|
54
|
+
data[:additions], data[:deletions], data[:create],
|
55
|
+
data[:delete], data[:rename], data[:copy], data[:merges]]
|
56
|
+
output += "\n"
|
57
|
+
output += print_language_data(config[:pattern], data)
|
58
|
+
return output
|
59
|
+
end
|
60
|
+
|
61
|
+
def print_language_data(pattern, data)
|
62
|
+
output = ""
|
63
|
+
# Print information of each language for the data
|
64
|
+
data[:languages].each do |key,value|
|
65
|
+
output += pattern % ["", key, "", value[:additions], value[:deletions],
|
66
|
+
value[:create], value[:delete], value[:rename],
|
67
|
+
value[:copy], value[:merges]]
|
68
|
+
output += "\n"
|
69
|
+
end
|
70
|
+
return output
|
71
|
+
end
|
72
|
+
|
73
|
+
def print_header(config)
|
74
|
+
total_authors = @commits.stats.size
|
75
|
+
|
76
|
+
output = ""
|
77
|
+
# Print summary information of displayed results
|
78
|
+
if config[:top_n] > 0 and config[:top_n] < total_authors
|
79
|
+
output += "Top #{config[:top_n]} authors(#{total_authors}) sorted by #{config[:sort]}\n"
|
80
|
+
else
|
81
|
+
output += "All authors(#{total_authors}) sorted by #{config[:sort]}\n"
|
82
|
+
end
|
83
|
+
|
84
|
+
# Print column headers
|
85
|
+
output += "-"*87 + "-"*config[:author_length] + "-"*config[:language_length]
|
86
|
+
output += "\n"
|
87
|
+
output += config[:pattern] % ['Name/Email', 'Language', 'Commits', 'Additions', 'Deletions', 'Creates', 'Deletes', 'Renames', 'Copies', 'Merges']
|
88
|
+
output += "\n"
|
89
|
+
output += "-"*87 + "-"*config[:author_length] + "-"*config[:language_length]
|
90
|
+
output += "\n"
|
91
|
+
return output
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -5,12 +5,9 @@ require 'linguist'
|
|
5
5
|
require 'os'
|
6
6
|
require 'pathname'
|
7
7
|
|
8
|
-
#
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
include Linguist::BlobHelper
|
13
|
-
end
|
14
|
-
end
|
8
|
+
# Must be required before all other files
|
9
|
+
require 'git_statistics/core_ext/string'
|
10
|
+
require 'git_statistics/blob'
|
11
|
+
require 'git_statistics/regex_matcher'
|
15
12
|
|
16
|
-
Dir.glob(File.dirname(__FILE__) + '
|
13
|
+
Dir.glob(File.dirname(__FILE__) + '/**/*.rb') {|file| require file}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module GitStatistics
|
2
|
+
class RegexMatcher
|
3
|
+
|
4
|
+
attr_reader :regex, :expected_change_count
|
5
|
+
def initialize(regex, expected_change_count)
|
6
|
+
@regex = regex
|
7
|
+
@expected_change_count = expected_change_count
|
8
|
+
end
|
9
|
+
|
10
|
+
def scan(line)
|
11
|
+
line.scan(regex).first || []
|
12
|
+
end
|
13
|
+
|
14
|
+
def if_matches(line)
|
15
|
+
changes = self.scan(line)
|
16
|
+
if changes && changes.size == expected_change_count
|
17
|
+
yield changes
|
18
|
+
else
|
19
|
+
{}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/git_statistics.rb
CHANGED
@@ -43,7 +43,7 @@ module GitStatistics
|
|
43
43
|
collector.commits.calculate_statistics(@opts[:email], @opts[:merges])
|
44
44
|
|
45
45
|
# Print results
|
46
|
-
results =
|
46
|
+
results = Formatters::Console.new(collector.commits)
|
47
47
|
puts results.print_summary(@opts[:sort], @opts[:email], @opts[:top])
|
48
48
|
end
|
49
49
|
end
|
data/spec/collector_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
include GitStatistics
|
3
3
|
|
4
4
|
describe Collector do
|
@@ -11,7 +11,7 @@ describe Collector do
|
|
11
11
|
# Create buffer which is an array of cleaned lines
|
12
12
|
let(:buffer) {
|
13
13
|
fixture(fixture_file).readlines.collect do |line|
|
14
|
-
|
14
|
+
line.clean_for_authors
|
15
15
|
end
|
16
16
|
}
|
17
17
|
|
data/spec/commits_spec.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
include GitStatistics
|
3
|
+
include GitStatistics::Formatters
|
3
4
|
|
4
|
-
describe
|
5
|
+
describe Console do
|
5
6
|
let(:verbose) {false}
|
6
7
|
let(:limit) {100}
|
7
8
|
let(:fresh) {true}
|
@@ -21,7 +22,7 @@ describe Results do
|
|
21
22
|
setup_commits(commits, fixture_file, save_file, pretty)
|
22
23
|
commits.calculate_statistics(email, merge)
|
23
24
|
commits.author_top_n_type(sort)
|
24
|
-
results =
|
25
|
+
results = Console.new(commits)
|
25
26
|
}
|
26
27
|
|
27
28
|
let(:config) {
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
include GitStatistics
|
3
|
+
|
4
|
+
describe RegexMatcher do
|
5
|
+
let(:change_info) { RegexMatcher.new(/(match)/i, 1) }
|
6
|
+
let(:text) { 'matching string' }
|
7
|
+
|
8
|
+
describe "#scan" do
|
9
|
+
subject { change_info.scan(text) }
|
10
|
+
context "with matching string" do
|
11
|
+
its(:size) { should == 1 }
|
12
|
+
end
|
13
|
+
context "without matching string" do
|
14
|
+
let(:text) { 'does not matter' }
|
15
|
+
its(:size) { should == 0 }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
describe "#if_matches" do
|
19
|
+
it "should yield the result with matching string" do
|
20
|
+
original = :original
|
21
|
+
change_info.if_matches(text) do |changes|
|
22
|
+
original = :new_value
|
23
|
+
end
|
24
|
+
original.should == :new_value
|
25
|
+
end
|
26
|
+
it "should not yield the result without a matching string" do
|
27
|
+
text = 'does not yield'
|
28
|
+
original = :original
|
29
|
+
change_info.if_matches(text) do |changes|
|
30
|
+
original = :new_value
|
31
|
+
end
|
32
|
+
original.should == :original
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/spec/utilities_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
include GitStatistics
|
3
3
|
|
4
4
|
describe Utilities do
|
@@ -54,7 +54,7 @@ describe Utilities do
|
|
54
54
|
|
55
55
|
describe "#clean_string" do
|
56
56
|
let(:unclean) {" master "}
|
57
|
-
let(:clean) {
|
57
|
+
let(:clean) {unclean.clean_for_authors}
|
58
58
|
|
59
59
|
context "with trailling spaces" do
|
60
60
|
it {clean.should == "master"}
|
@@ -162,7 +162,10 @@ describe Utilities do
|
|
162
162
|
|
163
163
|
context "with missing directory" do
|
164
164
|
subject { files }
|
165
|
-
before
|
165
|
+
before do
|
166
|
+
subject.class.stub(:warn)
|
167
|
+
FileUtils.rmdir(directory)
|
168
|
+
end
|
166
169
|
it { should == 0 }
|
167
170
|
end
|
168
171
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_statistics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -96,47 +96,29 @@ email:
|
|
96
96
|
- kevin.j.jalbert@gmail.com
|
97
97
|
executables:
|
98
98
|
- git_statistics
|
99
|
+
- git-statistics
|
99
100
|
extensions: []
|
100
101
|
extra_rdoc_files: []
|
101
102
|
files:
|
102
|
-
- .gitignore
|
103
|
-
- .travis.yml
|
104
|
-
- CHANGELOG.md
|
105
|
-
- Gemfile
|
106
|
-
- Gemfile.lock
|
107
|
-
- Guardfile
|
108
|
-
- LICENSE
|
109
|
-
- README.md
|
110
|
-
- Rakefile
|
111
|
-
- bin/git_statistics
|
112
|
-
- git_statistics.gemspec
|
113
|
-
- lib/git_statistics.rb
|
114
103
|
- lib/git_statistics/blob.rb
|
115
104
|
- lib/git_statistics/collector.rb
|
116
105
|
- lib/git_statistics/commit_line_extractor.rb
|
117
106
|
- lib/git_statistics/commits.rb
|
107
|
+
- lib/git_statistics/core_ext/string.rb
|
108
|
+
- lib/git_statistics/formatters/console.rb
|
118
109
|
- lib/git_statistics/initialize.rb
|
119
|
-
- lib/git_statistics/
|
110
|
+
- lib/git_statistics/regex_matcher.rb
|
120
111
|
- lib/git_statistics/utilities.rb
|
121
112
|
- lib/git_statistics/version.rb
|
113
|
+
- lib/git_statistics.rb
|
122
114
|
- spec/collector_spec.rb
|
123
115
|
- spec/commit_line_extractor_spec.rb
|
124
116
|
- spec/commits_spec.rb
|
125
|
-
- spec/
|
126
|
-
- spec/
|
127
|
-
- spec/fixtures/commit_buffer_information_first.txt
|
128
|
-
- spec/fixtures/commit_buffer_information_with_merge.txt
|
129
|
-
- spec/fixtures/commit_buffer_whole.txt
|
130
|
-
- spec/fixtures/git_many_branches.txt
|
131
|
-
- spec/fixtures/git_zero_branches.txt
|
132
|
-
- spec/fixtures/header_output.txt
|
133
|
-
- spec/fixtures/language_data_output.txt
|
134
|
-
- spec/fixtures/multiple_authors.json
|
135
|
-
- spec/fixtures/single_author_pretty.json
|
136
|
-
- spec/fixtures/summary_output.txt
|
137
|
-
- spec/results_spec.rb
|
138
|
-
- spec/spec_helper.rb
|
117
|
+
- spec/formatters/console_spec.rb
|
118
|
+
- spec/regex_matcher_spec.rb
|
139
119
|
- spec/utilities_spec.rb
|
120
|
+
- bin/git_statistics
|
121
|
+
- bin/git-statistics
|
140
122
|
homepage: https://github.com/kevinjalbert/git_statistics
|
141
123
|
licenses: []
|
142
124
|
post_install_message:
|
@@ -165,18 +147,6 @@ test_files:
|
|
165
147
|
- spec/collector_spec.rb
|
166
148
|
- spec/commit_line_extractor_spec.rb
|
167
149
|
- spec/commits_spec.rb
|
168
|
-
- spec/
|
169
|
-
- spec/
|
170
|
-
- spec/fixtures/commit_buffer_information_first.txt
|
171
|
-
- spec/fixtures/commit_buffer_information_with_merge.txt
|
172
|
-
- spec/fixtures/commit_buffer_whole.txt
|
173
|
-
- spec/fixtures/git_many_branches.txt
|
174
|
-
- spec/fixtures/git_zero_branches.txt
|
175
|
-
- spec/fixtures/header_output.txt
|
176
|
-
- spec/fixtures/language_data_output.txt
|
177
|
-
- spec/fixtures/multiple_authors.json
|
178
|
-
- spec/fixtures/single_author_pretty.json
|
179
|
-
- spec/fixtures/summary_output.txt
|
180
|
-
- spec/results_spec.rb
|
181
|
-
- spec/spec_helper.rb
|
150
|
+
- spec/formatters/console_spec.rb
|
151
|
+
- spec/regex_matcher_spec.rb
|
182
152
|
- spec/utilities_spec.rb
|
data/.gitignore
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
.bundle
|
4
|
-
.config
|
5
|
-
coverage
|
6
|
-
InstalledFiles
|
7
|
-
lib/bundler/man
|
8
|
-
pkg
|
9
|
-
rdoc
|
10
|
-
spec/reports
|
11
|
-
test/tmp
|
12
|
-
test/version_tmp
|
13
|
-
tmp
|
14
|
-
|
15
|
-
# YARD artifacts
|
16
|
-
.yardoc
|
17
|
-
_yardoc
|
18
|
-
doc/
|
19
|
-
|
20
|
-
# Mac artifacts
|
21
|
-
.DS_Store
|
22
|
-
|
23
|
-
# Application artifacts
|
24
|
-
.git_statistics/
|
data/.travis.yml
DELETED
data/CHANGELOG.md
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
# CHANGELOG
|
2
|
-
|
3
|
-
* [0.5.0 - January 16, 2013](https://github.com/kevinjalbert/git_statistics/compare/v0.4.1...v0.5.0)
|
4
|
-
* [0.4.1 - October 9, 2012](https://github.com/kevinjalbert/git_statistics/compare/v0.4.0...v0.4.1)
|
5
|
-
* [0.4.0 - September 25, 2012](https://github.com/kevinjalbert/git_statistics/compare/v0.3.0...v0.4.0)
|
6
|
-
* [0.3.0 - September 12, 2012](https://github.com/kevinjalbert/git_statistics/compare/v0.2.0...v0.3.0)
|
7
|
-
* [0.2.0 - September 6, 2012](https://github.com/kevinjalbert/git_statistics/compare/v0.1.2...v0.2.0)
|
8
|
-
* [0.1.2 - April 12, 2012](https://github.com/kevinjalbert/git_statistics/compare/v0.1.1...v0.1.2)
|
9
|
-
* [0.1.1 - April 12, 2012](https://github.com/kevinjalbert/git_statistics/compare/0e82e507e5b64a1140623c702015b97b1b3f7f81...v0.1.1)
|
data/Gemfile
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
gem "json"
|
4
|
-
gem "trollop"
|
5
|
-
gem "grit"
|
6
|
-
gem "github-linguist"
|
7
|
-
gem "os"
|
8
|
-
|
9
|
-
group :test do
|
10
|
-
gem "simplecov"
|
11
|
-
gem "rspec"
|
12
|
-
gem "rake"
|
13
|
-
end
|
14
|
-
|
15
|
-
group :development do
|
16
|
-
gem "guard"
|
17
|
-
gem "guard-rspec"
|
18
|
-
end
|
19
|
-
|
20
|
-
group :darwin do
|
21
|
-
gem "rb-fsevent"
|
22
|
-
gem "terminal-notifier-guard"
|
23
|
-
end
|
data/Gemfile.lock
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: https://rubygems.org/
|
3
|
-
specs:
|
4
|
-
blankslate (2.1.2.4)
|
5
|
-
charlock_holmes (0.6.9)
|
6
|
-
diff-lcs (1.1.3)
|
7
|
-
escape_utils (0.2.4)
|
8
|
-
ffi (1.0.11)
|
9
|
-
github-linguist (2.3.3)
|
10
|
-
charlock_holmes (~> 0.6.6)
|
11
|
-
escape_utils (~> 0.2.3)
|
12
|
-
mime-types (~> 1.19)
|
13
|
-
pygments.rb (>= 0.2.13)
|
14
|
-
grit (2.5.0)
|
15
|
-
diff-lcs (~> 1.1)
|
16
|
-
mime-types (~> 1.15)
|
17
|
-
posix-spawn (~> 0.3.6)
|
18
|
-
guard (1.3.2)
|
19
|
-
listen (>= 0.4.2)
|
20
|
-
thor (>= 0.14.6)
|
21
|
-
guard-rspec (1.2.1)
|
22
|
-
guard (>= 1.1)
|
23
|
-
json (1.7.5)
|
24
|
-
listen (0.5.0)
|
25
|
-
mime-types (1.19)
|
26
|
-
multi_json (1.3.6)
|
27
|
-
os (0.9.6)
|
28
|
-
posix-spawn (0.3.6)
|
29
|
-
pygments.rb (0.2.13)
|
30
|
-
rubypython (~> 0.5.3)
|
31
|
-
rake (0.9.2.2)
|
32
|
-
rb-fsevent (0.9.1)
|
33
|
-
rspec (2.11.0)
|
34
|
-
rspec-core (~> 2.11.0)
|
35
|
-
rspec-expectations (~> 2.11.0)
|
36
|
-
rspec-mocks (~> 2.11.0)
|
37
|
-
rspec-core (2.11.1)
|
38
|
-
rspec-expectations (2.11.3)
|
39
|
-
diff-lcs (~> 1.1.3)
|
40
|
-
rspec-mocks (2.11.2)
|
41
|
-
rubypython (0.5.3)
|
42
|
-
blankslate (>= 2.1.2.3)
|
43
|
-
ffi (~> 1.0.7)
|
44
|
-
simplecov (0.6.4)
|
45
|
-
multi_json (~> 1.0)
|
46
|
-
simplecov-html (~> 0.5.3)
|
47
|
-
simplecov-html (0.5.3)
|
48
|
-
terminal-notifier-guard (1.5.3)
|
49
|
-
thor (0.16.0)
|
50
|
-
trollop (2.0)
|
51
|
-
|
52
|
-
PLATFORMS
|
53
|
-
ruby
|
54
|
-
|
55
|
-
DEPENDENCIES
|
56
|
-
github-linguist
|
57
|
-
grit
|
58
|
-
guard
|
59
|
-
guard-rspec
|
60
|
-
json
|
61
|
-
os
|
62
|
-
rake
|
63
|
-
rb-fsevent
|
64
|
-
rspec
|
65
|
-
simplecov
|
66
|
-
terminal-notifier-guard
|
67
|
-
trollop
|
data/Guardfile
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
# A sample Guardfile
|
2
|
-
# More info at https://github.com/guard/guard#readme
|
3
|
-
guard :rspec, :version => 2, :notifications => false, :all_on_start => false do
|
4
|
-
watch(%r{^spec/.+_spec\.rb$})
|
5
|
-
watch(%r{^lib/git_statistics/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
6
|
-
watch('spec/spec_helper.rb') { "spec" }
|
7
|
-
end
|
data/LICENSE
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
Copyright (c) 2012 Kevin Jalbert
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
-
of this software and associated documentation files (the "Software"), to deal
|
5
|
-
in the Software without restriction, including without limitation the rights
|
6
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
-
copies of the Software, and to permit persons to whom the Software is
|
8
|
-
furnished to do so, subject to the following conditions:
|
9
|
-
|
10
|
-
The above copyright notice and this permission notice shall be included in
|
11
|
-
all copies or substantial portions of the Software.
|
12
|
-
|
13
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
-
THE SOFTWARE.
|
data/README.md
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
[![Build Status](https://secure.travis-ci.org/kevinjalbert/git_statistics.png?branch=master)](http://travis-ci.org/kevinjalbert/git_statistics)
|
2
|
-
[![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/kevinjalbert/git_statistics)
|
3
|
-
|
4
|
-
# Instructions
|
5
|
-
|
6
|
-
### Using the gem
|
7
|
-
1. Acquire gem (`gem install git_statistics`)
|
8
|
-
2. Run `git_statistics` in any directory that is a git repository (use -h for options)
|
9
|
-
|
10
|
-
### Working with source
|
11
|
-
1. Clone the repository
|
12
|
-
2. Install dependencies (`bundle install`)
|
13
|
-
3. Run tests `bundle exec rake`
|
14
|
-
4. Build and install local gem `bundle exec rake install`
|
15
|
-
|
16
|
-
# Functions
|
17
|
-
|
18
|
-
This gem will analyze every commit within a git repository using `git log` and [mojombo/grit](https://github.com/mojombo/grit). The following author statistics in relation to the git repository are collected and displayed:
|
19
|
-
|
20
|
-
* Total number of commits
|
21
|
-
* Total number of merge commits
|
22
|
-
* Total source line additions
|
23
|
-
* Total source line deletions
|
24
|
-
* Total file creates
|
25
|
-
* Total file deletes
|
26
|
-
* Total file renames
|
27
|
-
* Total file copies
|
28
|
-
|
29
|
-
This gem also uses [github/linguist](https://github.com/github/linguist) to determine the language of each individual file within commits. This augments the reported statistics by breaking down the author's statistics by languages.
|
30
|
-
|
31
|
-
This gem also has the ability to save the acquired data into a JSON file (in either a compressed or pretty format). If a saved file is present for the repository you can use the gem to load the data from the file, thus saving time for re-displaying the statistics using a different set of display flags (what statistic to sort on, number of authors to show, consider merges, etc...). In the event that a repository updates with new commits the gem allows you to update the saved file with the new commits.
|
32
|
-
|
33
|
-
# Example Output
|
34
|
-
The following is the output produced by *git_statistics* when used on the [pengwynn/octokit](https://github.com/pengwynn/octokit) (at commit [95a9de3](https://github.com/pengwynn/octokit/commit/95a9de325bee4ca03c9c1d61de2d643666c90037)) git repository. In this output we show the top three authors in rankings based on number of commits (merge commits are excluded from these results).
|
35
|
-
|
36
|
-
![screenshot](http://cloud.github.com/downloads/kevinjalbert/git_statistics/pengwynn_octokit_output.png)
|
37
|
-
|
38
|
-
# Contributing
|
39
|
-
|
40
|
-
1. Fork it
|
41
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
42
|
-
3. Commit your changes (`git commit -am 'Added some feature'`)
|
43
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
44
|
-
5. Create new Pull Request
|
data/Rakefile
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env rake
|
2
|
-
|
3
|
-
require 'rake/clean'
|
4
|
-
require 'rspec/core/rake_task'
|
5
|
-
require "bundler/gem_tasks"
|
6
|
-
|
7
|
-
CLOBBER.include('coverage')
|
8
|
-
|
9
|
-
desc "Run all specs"
|
10
|
-
RSpec::Core::RakeTask.new do |t|
|
11
|
-
t.pattern = "./spec/**/*spec.rb"
|
12
|
-
end
|
13
|
-
|
14
|
-
task :default => :spec
|
data/git_statistics.gemspec
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path('../lib/git_statistics/version', __FILE__)
|
3
|
-
|
4
|
-
Gem::Specification.new do |gem|
|
5
|
-
gem.homepage = 'https://github.com/kevinjalbert/git_statistics'
|
6
|
-
gem.authors = ["Kevin Jalbert"]
|
7
|
-
gem.email = ["kevin.j.jalbert@gmail.com"]
|
8
|
-
gem.name = 'git_statistics'
|
9
|
-
gem.version = GitStatistics::VERSION
|
10
|
-
gem.summary = "Gem that provides the ability to gather detailed git statistics"
|
11
|
-
gem.description = "git_statistics is a gem that provides detailed git statistics"
|
12
|
-
gem.require_paths = ["lib"]
|
13
|
-
gem.files = `git ls-files`.split($\)
|
14
|
-
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
15
|
-
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
16
|
-
gem.executables << 'git_statistics'
|
17
|
-
gem.required_ruby_version = '>= 1.9.1'
|
18
|
-
gem.add_dependency('json')
|
19
|
-
gem.add_dependency('trollop')
|
20
|
-
gem.add_dependency('grit')
|
21
|
-
gem.add_dependency('github-linguist')
|
22
|
-
gem.add_dependency('os')
|
23
|
-
end
|
@@ -1,94 +0,0 @@
|
|
1
|
-
module GitStatistics
|
2
|
-
class Results
|
3
|
-
|
4
|
-
attr_accessor :commits
|
5
|
-
|
6
|
-
def initialize(commits)
|
7
|
-
@commits = commits
|
8
|
-
end
|
9
|
-
|
10
|
-
def prepare_result_summary(sort, email, top_n = 0)
|
11
|
-
# Default to a 0 if given a negative number to display
|
12
|
-
top_n = 0 if top_n < 0
|
13
|
-
|
14
|
-
# Acquire data based on sort type and top # to show
|
15
|
-
data = @commits.author_top_n_type(sort.to_sym, top_n)
|
16
|
-
raise "Parameter for --sort is not valid" if data.nil?
|
17
|
-
|
18
|
-
# Create config
|
19
|
-
config = {:data => data,
|
20
|
-
:author_length => Utilities.max_length_in_list(data.keys, 17),
|
21
|
-
:language_length => Utilities.max_length_in_list(@commits.totals[:languages].keys, 8),
|
22
|
-
:sort => sort,
|
23
|
-
:email => email,
|
24
|
-
:top_n => top_n}
|
25
|
-
|
26
|
-
# Acquire formatting pattern for output
|
27
|
-
pattern = "%-#{config[:author_length]}s | %-#{config[:language_length]}s | %7s | %9s | %9s | %7s | %7s | %7s | %6s | %6s |"
|
28
|
-
config[:pattern] = pattern
|
29
|
-
return config
|
30
|
-
end
|
31
|
-
|
32
|
-
def print_summary(sort, email, top_n = 0)
|
33
|
-
# Prepare and determine the config for the result summary based on parameters
|
34
|
-
config = prepare_result_summary(sort, email, top_n)
|
35
|
-
|
36
|
-
# Print query/header information
|
37
|
-
output = print_header(config)
|
38
|
-
|
39
|
-
# Print per author information
|
40
|
-
config[:data].each do |key,value|
|
41
|
-
output += config[:pattern] % [key, "", value[:commits], value[:additions],
|
42
|
-
value[:deletions], value[:create], value[:delete],
|
43
|
-
value[:rename], value[:copy], value[:merges]]
|
44
|
-
output += "\n"
|
45
|
-
output += print_language_data(config[:pattern], value)
|
46
|
-
end
|
47
|
-
|
48
|
-
# Reprint query/header for repository information
|
49
|
-
output += "\n"
|
50
|
-
output += print_header(config)
|
51
|
-
data = @commits.totals
|
52
|
-
output += config[:pattern] % ["Repository Totals", "", data[:commits],
|
53
|
-
data[:additions], data[:deletions], data[:create],
|
54
|
-
data[:delete], data[:rename], data[:copy], data[:merges]]
|
55
|
-
output += "\n"
|
56
|
-
output += print_language_data(config[:pattern], data)
|
57
|
-
return output
|
58
|
-
end
|
59
|
-
|
60
|
-
def print_language_data(pattern, data)
|
61
|
-
output = ""
|
62
|
-
# Print information of each language for the data
|
63
|
-
data[:languages].each do |key,value|
|
64
|
-
output += pattern % ["", key, "", value[:additions], value[:deletions],
|
65
|
-
value[:create], value[:delete], value[:rename],
|
66
|
-
value[:copy], value[:merges]]
|
67
|
-
output += "\n"
|
68
|
-
end
|
69
|
-
return output
|
70
|
-
end
|
71
|
-
|
72
|
-
def print_header(config)
|
73
|
-
total_authors = @commits.stats.size
|
74
|
-
|
75
|
-
output = ""
|
76
|
-
# Print summary information of displayed results
|
77
|
-
if config[:top_n] > 0 and config[:top_n] < total_authors
|
78
|
-
output += "Top #{config[:top_n]} authors(#{total_authors}) sorted by #{config[:sort]}\n"
|
79
|
-
else
|
80
|
-
output += "All authors(#{total_authors}) sorted by #{config[:sort]}\n"
|
81
|
-
end
|
82
|
-
|
83
|
-
# Print column headers
|
84
|
-
output += "-"*87 + "-"*config[:author_length] + "-"*config[:language_length]
|
85
|
-
output += "\n"
|
86
|
-
output += config[:pattern] % ['Name/Email', 'Language', 'Commits', 'Additions', 'Deletions', 'Creates', 'Deletes', 'Renames', 'Copies', 'Merges']
|
87
|
-
output += "\n"
|
88
|
-
output += "-"*87 + "-"*config[:author_length] + "-"*config[:language_length]
|
89
|
-
output += "\n"
|
90
|
-
return output
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
@@ -1,9 +0,0 @@
|
|
1
|
-
45 1 dir/README
|
2
|
-
6 5 dir/lib/{old_dir => new_dir}/copy_file.rb
|
3
|
-
0 0 dir/lib/rename/{old_file.rb => new_file.rb}
|
4
|
-
0 127 dir/lib/delete_file.rb
|
5
|
-
60 0 dir/lib/create_file.rb
|
6
|
-
copy dir/lib/{old_dir => new_dir}/copy_file.rb (65%)
|
7
|
-
rename dir/lib/rename/{old_file.rb => new_file.rb} (100%)
|
8
|
-
delete mode 100644 dir/lib/delete_file.rb
|
9
|
-
create mode 100644 dir/lib/create_file.rb
|
@@ -1 +0,0 @@
|
|
1
|
-
111111aa111a11111a11aa11aaaa11a111111a11,Test Author,author@test.com,2011-01-11 11:11:11 +0000,22bbbb2
|
@@ -1 +0,0 @@
|
|
1
|
-
111111aa111a11111a11aa11aaaa11a111111a11,Test Author,author@test.com,2011-01-11 11:11:11 +0000,
|
@@ -1 +0,0 @@
|
|
1
|
-
111111aa111a11111a11aa11aaaa11a111111a11,Test Author,author@test.com,2011-01-11 11:11:11 +0000,22bbbb2 33cccc3
|
@@ -1 +0,0 @@
|
|
1
|
-
* master
|
@@ -1,4 +0,0 @@
|
|
1
|
-
All authors(2) sorted by commits
|
2
|
-
----------------------------------------------------------------------------------------------------------------
|
3
|
-
Name/Email | Language | Commits | Additions | Deletions | Creates | Deletes | Renames | Copies | Merges |
|
4
|
-
----------------------------------------------------------------------------------------------------------------
|
@@ -1 +0,0 @@
|
|
1
|
-
{"0e82e507e5b64a1140623c702015b97b1b3f7f81":{"author":"Kevin Jalbert","author_email":"kevin.j.jalbert@gmail.com","time":"2012-04-04 13:46:56 -0400","files":[{"name":"README.md","additions":11,"deletions":0,"status":"create","binary":false,"image":false,"vendored":false,"generated":false,"language":"Markdown"},{"name":"git_statistics.rb","additions":62,"deletions":0,"status":"create","binary":false,"image":false,"vendored":false,"generated":false,"language":"Ruby"}],"merge":false,"create":2,"additions":73,"deletions":0},"fe947ea47b3d6240f2bb103ff51636038b3bb1d7":{"author":"John Smith","author_email":"john.smith@sample.com","time":"2012-04-04 19:22:04 -0400","files":[{"name":"git_statistics.rb","additions":64,"deletions":16,"status":null,"binary":false,"image":false,"vendored":false,"generated":false,"language":"Ruby"}],"merge":false,"additions":64,"deletions":16},"354e8a3795470d75388549d7326d9c12f6e0bf1a":{"author":"Kevin Jalbert","author_email":"kevin.j.jalbert@gmail.com","time":"2012-04-04 23:50:04 -0400","files":[{"name":"README.md","additions":7,"deletions":1,"status":null,"binary":false,"image":false,"vendored":false,"generated":false,"language":"Markdown"},{"name":"commits.rb","additions":64,"deletions":0,"status":"create","binary":false,"image":false,"vendored":false,"generated":false,"language":"Ruby"},{"name":"git_statistics.rb","additions":9,"deletions":4,"status":null,"binary":false,"image":false,"vendored":false,"generated":false,"language":"Ruby"}],"merge":true,"additions":80,"deletions":5,"create":1}}
|
@@ -1,79 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"0e82e507e5b64a1140623c702015b97b1b3f7f81": {
|
3
|
-
"author": "Kevin Jalbert",
|
4
|
-
"author_email": "kevin.j.jalbert@gmail.com",
|
5
|
-
"time": "2012-04-04 13:46:56 -0400",
|
6
|
-
"files": [
|
7
|
-
{
|
8
|
-
"name": "README.md",
|
9
|
-
"additions": 11,
|
10
|
-
"deletions": 0,
|
11
|
-
"status": "create",
|
12
|
-
"binary": false,
|
13
|
-
"image": false,
|
14
|
-
"vendored": false,
|
15
|
-
"generated": false,
|
16
|
-
"language": "Markdown"
|
17
|
-
},
|
18
|
-
{
|
19
|
-
"name": "git_statistics.rb",
|
20
|
-
"additions": 62,
|
21
|
-
"deletions": 0,
|
22
|
-
"status": "create",
|
23
|
-
"binary": false,
|
24
|
-
"image": false,
|
25
|
-
"vendored": false,
|
26
|
-
"generated": false,
|
27
|
-
"language": "Ruby"
|
28
|
-
}
|
29
|
-
],
|
30
|
-
"merge": false,
|
31
|
-
"create": 2,
|
32
|
-
"additions": 73,
|
33
|
-
"deletions": 0
|
34
|
-
},
|
35
|
-
"354e8a3795470d75388549d7326d9c12f6e0bf1a": {
|
36
|
-
"author": "Kevin Jalbert",
|
37
|
-
"author_email": "kevin.j.jalbert@gmail.com",
|
38
|
-
"time": "2012-04-04 23:50:04 -0400",
|
39
|
-
"files": [
|
40
|
-
{
|
41
|
-
"name": "README.md",
|
42
|
-
"additions": 7,
|
43
|
-
"deletions": 1,
|
44
|
-
"status": null,
|
45
|
-
"binary": false,
|
46
|
-
"image": false,
|
47
|
-
"vendored": false,
|
48
|
-
"generated": false,
|
49
|
-
"language": "Markdown"
|
50
|
-
},
|
51
|
-
{
|
52
|
-
"name": "commits.rb",
|
53
|
-
"additions": 64,
|
54
|
-
"deletions": 0,
|
55
|
-
"status": "create",
|
56
|
-
"binary": false,
|
57
|
-
"image": false,
|
58
|
-
"vendored": false,
|
59
|
-
"generated": false,
|
60
|
-
"language": "Ruby"
|
61
|
-
},
|
62
|
-
{
|
63
|
-
"name": "git_statistics.rb",
|
64
|
-
"additions": 9,
|
65
|
-
"deletions": 4,
|
66
|
-
"status": null,
|
67
|
-
"binary": false,
|
68
|
-
"image": false,
|
69
|
-
"vendored": false,
|
70
|
-
"generated": false,
|
71
|
-
"language": "Ruby"
|
72
|
-
}
|
73
|
-
],
|
74
|
-
"merge": true,
|
75
|
-
"additions": 80,
|
76
|
-
"deletions": 5,
|
77
|
-
"create": 1
|
78
|
-
}
|
79
|
-
}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
All authors(2) sorted by commits
|
2
|
-
----------------------------------------------------------------------------------------------------------------
|
3
|
-
Name/Email | Language | Commits | Additions | Deletions | Creates | Deletes | Renames | Copies | Merges |
|
4
|
-
----------------------------------------------------------------------------------------------------------------
|
5
|
-
Kevin Jalbert | | 1 | 73 | 0 | 2 | 0 | 0 | 0 | 0 |
|
6
|
-
| Markdown | | 11 | 0 | 1 | 0 | 0 | 0 | 0 |
|
7
|
-
| Ruby | | 62 | 0 | 1 | 0 | 0 | 0 | 0 |
|
8
|
-
John Smith | | 1 | 64 | 16 | 0 | 0 | 0 | 0 | 0 |
|
9
|
-
| Ruby | | 64 | 16 | 0 | 0 | 0 | 0 | 0 |
|
10
|
-
|
11
|
-
All authors(2) sorted by commits
|
12
|
-
----------------------------------------------------------------------------------------------------------------
|
13
|
-
Name/Email | Language | Commits | Additions | Deletions | Creates | Deletes | Renames | Copies | Merges |
|
14
|
-
----------------------------------------------------------------------------------------------------------------
|
15
|
-
Repository Totals | | 2 | 137 | 16 | 2 | 0 | 0 | 0 | 0 |
|
16
|
-
| Markdown | | 11 | 0 | 1 | 0 | 0 | 0 | 0 |
|
17
|
-
| Ruby | | 126 | 16 | 1 | 0 | 0 | 0 | 0 |
|
data/spec/spec_helper.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'simplecov'
|
2
|
-
|
3
|
-
SimpleCov.start do
|
4
|
-
add_filter "/spec/"
|
5
|
-
end
|
6
|
-
|
7
|
-
require File.dirname(__FILE__) + '/../lib/git_statistics/initialize.rb'
|
8
|
-
|
9
|
-
def fixture(file)
|
10
|
-
File.new(File.dirname(__FILE__) + '/fixtures/' + file, 'r')
|
11
|
-
end
|
12
|
-
|
13
|
-
def setup_commits(commits, file_load, file_save, pretty)
|
14
|
-
return if file_load.nil? || file_save.nil?
|
15
|
-
commits.load(fixture(file_load))
|
16
|
-
commits.save(file_save, pretty)
|
17
|
-
end
|