turbulence 1.2.0 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/Gemfile.lock +14 -14
- data/bin/bule +19 -10
- data/lib/turbulence/command_line_interface.rb +5 -8
- data/lib/turbulence/scm/perforce.rb +3 -3
- data/lib/turbulence/version.rb +1 -1
- data/spec/turbulence/command_line_interface_spec.rb +2 -2
- data/spec/turbulence/scm/git_spec.rb +1 -1
- data/spec/turbulence/scm/perforce_spec.rb +30 -8
- data/turbulence.gemspec +1 -1
- metadata +57 -107
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MzdhYzRjNGNmMGQwODEwZTk2ZWNiMzRjMmZjMzUyNzgzY2IzNWY5YWZlODFm
|
10
|
-
MmJlYjNjODAwMDE4YmYyNzlkZDM2NTZkNzY2OWU5NjJmNDVmYzE3OWJlN2I4
|
11
|
-
YmIyOWZhMGMwOTFhOWJjZWIxY2MwYWU4ODlkODMxNjZiM2I4ZDk=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ODk3MmQ1MmUwZmIyOTRkMTRhMjkzYjNjM2M0ZmY0NmQ5ZTMxMDg0OTBiZTIw
|
14
|
-
NjQ1NDVjNjk5OTgxMWQyMTNlMzZhMmU3NzdlMmFjNTJjYTJlOGEyYjhhZjNl
|
15
|
-
MTQ0Mzc0ZDk1ZGFiZjBjNzZlNTAxZDk0YWU3MDAwODE1YTliMDA=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0cc515339556ec42ba24bc366cbabdf099372173
|
4
|
+
data.tar.gz: 93f14f3ed0ee121baed68d6e9a25d2bc88f5b123
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9396fedf8cfabf40b3cf7ecf8f4f09184846bd2c3a9489b0c2210056966bf35a9536f3f75bf5ac465f98b8f32531f1621ade7d24e0643a3b8fe1a373993c82ed
|
7
|
+
data.tar.gz: 9fcc323fb401edc30a9066d8a3dfe0ecc0c586183dcef4ccc91810a1f7caaac420b64079a7e965575f84520e2f1af122a3c7de31fc43f1ede88de8c1f515fe05
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
turbulence (1.2.
|
4
|
+
turbulence (1.2.2)
|
5
5
|
flog (~> 4.1)
|
6
6
|
json (>= 1.4.6)
|
7
7
|
launchy (>= 2.0.0)
|
@@ -10,30 +10,30 @@ GEM
|
|
10
10
|
remote: http://rubygems.org/
|
11
11
|
specs:
|
12
12
|
addressable (2.3.5)
|
13
|
-
diff-lcs (1.
|
13
|
+
diff-lcs (1.2.5)
|
14
14
|
flog (4.1.2)
|
15
15
|
ruby_parser (~> 3.1, > 3.1.0)
|
16
16
|
sexp_processor (~> 4.0)
|
17
|
-
json (1.8.
|
18
|
-
launchy (2.
|
17
|
+
json (1.8.1)
|
18
|
+
launchy (2.4.2)
|
19
19
|
addressable (~> 2.3)
|
20
20
|
rake (10.1.0)
|
21
|
-
rspec (2.
|
22
|
-
rspec-core (~> 2.
|
23
|
-
rspec-expectations (~> 2.
|
24
|
-
rspec-mocks (~> 2.
|
25
|
-
rspec-core (2.
|
26
|
-
rspec-expectations (2.
|
27
|
-
diff-lcs (
|
28
|
-
rspec-mocks (2.
|
21
|
+
rspec (2.14.1)
|
22
|
+
rspec-core (~> 2.14.0)
|
23
|
+
rspec-expectations (~> 2.14.0)
|
24
|
+
rspec-mocks (~> 2.14.0)
|
25
|
+
rspec-core (2.14.7)
|
26
|
+
rspec-expectations (2.14.4)
|
27
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
28
|
+
rspec-mocks (2.14.4)
|
29
29
|
ruby_parser (3.2.2)
|
30
30
|
sexp_processor (~> 4.1)
|
31
|
-
sexp_processor (4.
|
31
|
+
sexp_processor (4.4.0)
|
32
32
|
|
33
33
|
PLATFORMS
|
34
34
|
ruby
|
35
35
|
|
36
36
|
DEPENDENCIES
|
37
37
|
rake
|
38
|
-
rspec (~> 2.
|
38
|
+
rspec (~> 2.14.0)
|
39
39
|
turbulence!
|
data/bin/bule
CHANGED
@@ -1,14 +1,23 @@
|
|
1
|
-
#!/usr/bin/env
|
2
|
-
|
3
|
-
|
1
|
+
#!/usr/bin/env ruby_executable_hooks
|
2
|
+
#
|
3
|
+
# This file was generated by RubyGems.
|
4
|
+
#
|
5
|
+
# The application 'turbulence' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
4
8
|
|
5
|
-
|
9
|
+
require 'rubygems'
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
+
version = ">= 0"
|
12
|
+
|
13
|
+
if ARGV.first
|
14
|
+
str = ARGV.first
|
15
|
+
str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
|
16
|
+
if str =~ /\A_(.*)_\z/
|
17
|
+
version = $1
|
18
|
+
ARGV.shift
|
19
|
+
end
|
11
20
|
end
|
12
21
|
|
13
|
-
|
14
|
-
|
22
|
+
gem 'turbulence', version
|
23
|
+
load Gem.bin_path('turbulence', 'bule', version)
|
@@ -16,8 +16,9 @@ class Turbulence
|
|
16
16
|
|
17
17
|
attr_reader :exclusion_pattern
|
18
18
|
attr_reader :directory
|
19
|
-
def initialize(argv)
|
19
|
+
def initialize(argv, additional_options = {})
|
20
20
|
Turbulence::Calculators::Churn.scm = Scm::Git
|
21
|
+
@graph_type = "turbulence"
|
21
22
|
OptionParser.new do |opts|
|
22
23
|
opts.banner = "Usage: bule [options] [dir]"
|
23
24
|
|
@@ -53,6 +54,7 @@ class Turbulence
|
|
53
54
|
end.parse!(argv)
|
54
55
|
|
55
56
|
@directory = argv.first || Dir.pwd
|
57
|
+
@output = additional_options.fetch(:output, STDOUT)
|
56
58
|
end
|
57
59
|
|
58
60
|
def copy_templates_into(directory)
|
@@ -63,7 +65,7 @@ class Turbulence
|
|
63
65
|
FileUtils.mkdir_p("turbulence")
|
64
66
|
|
65
67
|
Dir.chdir("turbulence") do
|
66
|
-
turb = Turbulence.new(directory,
|
68
|
+
turb = Turbulence.new(directory, @output, @exclusion_pattern)
|
67
69
|
|
68
70
|
generator = case @graph_type
|
69
71
|
when "treemap"
|
@@ -77,12 +79,7 @@ class Turbulence
|
|
77
79
|
end
|
78
80
|
|
79
81
|
def open_bundle
|
80
|
-
|
81
|
-
when "treemap"
|
82
|
-
Launchy.open("file://#{directory}/turbulence/treemap.html")
|
83
|
-
else
|
84
|
-
Launchy.open("file://#{directory}/turbulence/turbulence.html")
|
85
|
-
end
|
82
|
+
Launchy.open("file:///#{directory}/turbulence/#{@graph_type}.html")
|
86
83
|
end
|
87
84
|
end
|
88
85
|
end
|
@@ -3,7 +3,7 @@ require 'pathname'
|
|
3
3
|
|
4
4
|
class Turbulence
|
5
5
|
module Scm
|
6
|
-
class Perforce
|
6
|
+
class Perforce
|
7
7
|
class << self
|
8
8
|
def log_command(commit_range = "")
|
9
9
|
full_log = ""
|
@@ -33,7 +33,7 @@ class Turbulence
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def depot_to_local(depot_file)
|
36
|
-
abs_path = extract_clientfile_from_fstat_of(depot_file)
|
36
|
+
abs_path = extract_clientfile_from_fstat_of(depot_file)
|
37
37
|
Pathname.new(abs_path).relative_path_from(Pathname.new(FileUtils.pwd)).to_s
|
38
38
|
end
|
39
39
|
|
@@ -64,7 +64,7 @@ class Turbulence
|
|
64
64
|
"#{arr[0]}\t0\t#{arr[1]}\n"
|
65
65
|
end
|
66
66
|
|
67
|
-
def sum_of_changes(p4_describe_output)
|
67
|
+
def sum_of_changes(p4_describe_output)
|
68
68
|
churn = 0
|
69
69
|
p4_describe_output.each_line do |line|
|
70
70
|
next unless line =~ /(add|deleted|changed) .* (\d+) lines/
|
data/lib/turbulence/version.rb
CHANGED
@@ -2,7 +2,7 @@ require 'rspec'
|
|
2
2
|
require 'turbulence'
|
3
3
|
|
4
4
|
describe Turbulence::CommandLineInterface do
|
5
|
-
let(:cli) { Turbulence::CommandLineInterface.new(%w(.)) }
|
5
|
+
let(:cli) { Turbulence::CommandLineInterface.new(%w(.), :output => nil) }
|
6
6
|
describe "::TEMPLATE_FILES" do
|
7
7
|
Turbulence::CommandLineInterface::TEMPLATE_FILES.each do |template_file|
|
8
8
|
File.dirname(template_file).should == Turbulence::CommandLineInterface::TURBULENCE_TEMPLATE_PATH
|
@@ -22,7 +22,7 @@ describe Turbulence::CommandLineInterface do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
it "passes along exclusion pattern" do
|
25
|
-
cli = Turbulence::CommandLineInterface.new(%w(--exclude turbulence))
|
25
|
+
cli = Turbulence::CommandLineInterface.new(%w(--exclude turbulence), :output => nil)
|
26
26
|
cli.generate_bundle
|
27
27
|
lines = File.new('turbulence/cc.js').readlines
|
28
28
|
lines.any? { |l| l =~ /turbulence\.rb/ }.should be_false
|
@@ -20,7 +20,7 @@ describe Turbulence::Scm::Git do
|
|
20
20
|
|
21
21
|
describe "::log_command" do
|
22
22
|
it "takes an optional argument specify to the range" do
|
23
|
-
expect{Turbulence::Scm::Git.log_command("d551e63f79a90430e560ea871f4e1e39e6e739bd HEAD")}.to_not raise_error
|
23
|
+
expect{Turbulence::Scm::Git.log_command("d551e63f79a90430e560ea871f4e1e39e6e739bd HEAD")}.to_not raise_error
|
24
24
|
end
|
25
25
|
it "lists insertions/deletions per file and change" do
|
26
26
|
Turbulence::Scm::Git.log_command.should match(/\d+\t\d+\t[A-z.]*/)
|
@@ -3,6 +3,7 @@ require 'rspec/mocks'
|
|
3
3
|
|
4
4
|
describe Turbulence::Scm::Perforce do
|
5
5
|
let (:p4_scm) { Turbulence::Scm::Perforce }
|
6
|
+
|
6
7
|
before do
|
7
8
|
p4_scm.stub(:p4_list_changes) do
|
8
9
|
"Change 62660 on 2005/11/28 by x@client 'CHANGED: adapted to DESCODE '
|
@@ -13,6 +14,7 @@ Change 11250 on 2004/09/17 by x@client 'CHANGED: trigger now also allow'
|
|
13
14
|
Change 9250 on 2004/08/20 by x@client 'BUGFIX: bug#1583 (People can so'
|
14
15
|
Change 5560 on 2004/04/26 by x@client 'ADDED: The \"BRANCHED\" tag.'"
|
15
16
|
end
|
17
|
+
|
16
18
|
p4_scm.stub(:p4_describe_change).with("5560") do
|
17
19
|
"Change 5560 by x@client on 2004/04/26 17:25:03
|
18
20
|
|
@@ -38,20 +40,28 @@ deleted 0 chunks 0 lines
|
|
38
40
|
changed 1 chunks 3 / 1 lines"
|
39
41
|
end
|
40
42
|
end
|
43
|
+
|
41
44
|
describe "::is_repo?" do
|
45
|
+
before :each do
|
46
|
+
ENV.stub(:[]).with("P4CLIENT").and_return(nil)
|
47
|
+
ENV.stub(:[]).with("PATH").and_return("")
|
48
|
+
end
|
49
|
+
|
42
50
|
it "returns true if P4CLIENT is set " do
|
43
|
-
ENV[
|
44
|
-
|
51
|
+
ENV.stub(:[]).with("P4CLIENT").and_return("c-foo.bar")
|
52
|
+
|
53
|
+
Turbulence::Scm::Perforce.is_repo?(".").should be_true
|
45
54
|
end
|
55
|
+
|
46
56
|
it "returns false if P4CLIENT is empty" do
|
47
|
-
|
48
|
-
Turbulence::Scm::Perforce.is_repo?(".").should == false
|
57
|
+
Turbulence::Scm::Perforce.is_repo?(".").should be_false
|
49
58
|
end
|
59
|
+
|
50
60
|
it "returns false if p4 is not available" do
|
51
|
-
|
52
|
-
Turbulence::Scm::Perforce.is_repo?(".").should == false
|
61
|
+
Turbulence::Scm::Perforce.is_repo?(".").should be_false
|
53
62
|
end
|
54
63
|
end
|
64
|
+
|
55
65
|
describe "::log_command" do
|
56
66
|
before do
|
57
67
|
p4_scm.stub(:depot_to_local).with("//admin/scripts/triggers/enforce-submit-comment.py")\
|
@@ -62,19 +72,22 @@ changed 1 chunks 3 / 1 lines"
|
|
62
72
|
"Change 5560 on 2004/04/26 by x@client 'ADDED: The \"BRANCHED\" tag.'"
|
63
73
|
end
|
64
74
|
end
|
75
|
+
|
65
76
|
it "takes an optional argument to specify the range" do
|
66
|
-
expect{Turbulence::Scm::Perforce.log_command("@1,2")}.to_not raise_error
|
77
|
+
expect{Turbulence::Scm::Perforce.log_command("@1,2")}.to_not raise_error
|
67
78
|
end
|
68
79
|
|
69
80
|
it "lists insertions/deletions per file and change" do
|
70
81
|
Turbulence::Scm::Perforce.log_command().should match(/\d+\t\d+\t[A-z.]*/)
|
71
82
|
end
|
72
83
|
end
|
84
|
+
|
73
85
|
describe "::changes" do
|
74
86
|
it "lists changenumbers from parsing 'p4 changes' output" do
|
75
87
|
p4_scm.changes.should =~ %w[62660 45616 45615 45614 11250 9250 5560]
|
76
88
|
end
|
77
89
|
end
|
90
|
+
|
78
91
|
describe "::files_per_change" do
|
79
92
|
before do
|
80
93
|
p4_scm.stub(:depot_to_local).with("//admin/scripts/triggers/enforce-submit-comment.py")\
|
@@ -88,36 +101,42 @@ changed 1 chunks 3 / 1 lines"
|
|
88
101
|
[1,"triggers/check-consistency.py"]]
|
89
102
|
end
|
90
103
|
end
|
104
|
+
|
91
105
|
describe "::transform_for_output" do
|
92
106
|
it "adds a 0 for deletions" do
|
93
107
|
p4_scm.transform_for_output([1,"triggers/check-consistency.py"]).should == "1\t0\ttriggers/check-consistency.py\n"
|
94
108
|
end
|
95
109
|
end
|
110
|
+
|
96
111
|
describe "::depot_to_local" do
|
97
112
|
describe "on windows" do
|
98
113
|
before do
|
99
114
|
p4_scm.stub(:extract_clientfile_from_fstat_of).and_return("D:/Perforce/admin/scripts/triggers/enforce-no-head-change.py")
|
100
115
|
FileUtils.stub(:pwd).and_return("D:/Perforce")
|
101
116
|
end
|
117
|
+
|
102
118
|
it "converts depot-style paths to local paths using forward slashes" do
|
103
119
|
p4_scm.depot_to_local("//admin/scripts/triggers/enforce-no-head-change.py").should \
|
104
120
|
== "admin/scripts/triggers/enforce-no-head-change.py"
|
105
121
|
end
|
106
122
|
end
|
123
|
+
|
107
124
|
describe "on unix" do
|
108
125
|
before do
|
109
126
|
p4_scm.stub(:extract_clientfile_from_fstat_of).and_return("/home/jhwist/admin/scripts/triggers/enforce-no-head-change.py")
|
110
127
|
FileUtils.stub(:pwd).and_return("/home/jhwist")
|
111
128
|
end
|
129
|
+
|
112
130
|
it "converts depot-style paths to local paths using forward slashes" do
|
113
131
|
p4_scm.depot_to_local("//admin/scripts/triggers/enforce-no-head-change.py").should \
|
114
132
|
== "admin/scripts/triggers/enforce-no-head-change.py"
|
115
133
|
end
|
116
134
|
end
|
117
135
|
end
|
136
|
+
|
118
137
|
describe "::extract_clientfile_from_fstat_of" do
|
119
138
|
before do
|
120
|
-
p4_scm.stub(:p4_fstat) do
|
139
|
+
p4_scm.stub(:p4_fstat) do
|
121
140
|
"... depotFile //admin/scripts/triggers/enforce-no-head-change.py
|
122
141
|
... clientFile /home/jhwist/admin/scripts/triggers/enforce-no-head-change.py
|
123
142
|
... isMapped
|
@@ -130,16 +149,19 @@ changed 1 chunks 3 / 1 lines"
|
|
130
149
|
... haveRev 5"
|
131
150
|
end
|
132
151
|
end
|
152
|
+
|
133
153
|
it "uses clientFile field" do
|
134
154
|
p4_scm.extract_clientfile_from_fstat_of("//admin/scripts/triggers/enforce-no-head-change.py").should ==
|
135
155
|
"/home/jhwist/admin/scripts/triggers/enforce-no-head-change.py"
|
136
156
|
end
|
137
157
|
end
|
158
|
+
|
138
159
|
describe "::sum_of_changes" do
|
139
160
|
it "sums up changes" do
|
140
161
|
output = "add 1 chunks 1 lines\ndeleted 0 chunks 0 lines\nchanged 1 chunks 3 / 3 lines"
|
141
162
|
p4_scm.sum_of_changes(output).should == 4
|
142
163
|
end
|
164
|
+
|
143
165
|
it "ignores junk" do
|
144
166
|
output = "add nothing, change nothing"
|
145
167
|
p4_scm.sum_of_changes(output).should == 0
|
data/turbulence.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.add_dependency "flog", "~>4.1"
|
13
13
|
s.add_dependency "json", ">= 1.4.6"
|
14
14
|
s.add_dependency "launchy", ">= 2.0.0"
|
15
|
-
s.add_development_dependency 'rspec', '~> 2.
|
15
|
+
s.add_development_dependency 'rspec', '~> 2.14.0'
|
16
16
|
s.add_development_dependency 'rake'
|
17
17
|
|
18
18
|
s.summary = %q{Automates churn + flog scoring on a git repo for a Ruby project}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: turbulence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Fowler
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2014-03-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: flog
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
name: json
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - '>='
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: 1.4.6
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- -
|
40
|
+
- - '>='
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: 1.4.6
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: launchy
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - '>='
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: 2.0.0
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- -
|
54
|
+
- - '>='
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: 2.0.0
|
57
57
|
- !ruby/object:Gem::Dependency
|
@@ -60,26 +60,26 @@ dependencies:
|
|
60
60
|
requirements:
|
61
61
|
- - ~>
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 2.
|
63
|
+
version: 2.14.0
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - ~>
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 2.
|
70
|
+
version: 2.14.0
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rake
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - '>='
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
85
|
description: Based on this http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=COL&ObjectId=16679&tth=DYN&tt=siteemail&iDyn=2
|
@@ -88,82 +88,44 @@ email:
|
|
88
88
|
- mfeathers@obtiva.com
|
89
89
|
- coreyhaines@gmail.com
|
90
90
|
executables:
|
91
|
-
-
|
92
|
-
YnVsZQ==
|
91
|
+
- bule
|
93
92
|
extensions: []
|
94
93
|
extra_rdoc_files: []
|
95
94
|
files:
|
96
|
-
-
|
97
|
-
|
98
|
-
-
|
99
|
-
|
100
|
-
-
|
101
|
-
|
102
|
-
-
|
103
|
-
|
104
|
-
-
|
105
|
-
|
106
|
-
-
|
107
|
-
|
108
|
-
-
|
109
|
-
|
110
|
-
-
|
111
|
-
|
112
|
-
-
|
113
|
-
|
114
|
-
-
|
115
|
-
|
116
|
-
-
|
117
|
-
|
118
|
-
-
|
119
|
-
|
120
|
-
-
|
121
|
-
|
122
|
-
-
|
123
|
-
|
124
|
-
-
|
125
|
-
|
126
|
-
-
|
127
|
-
|
128
|
-
-
|
129
|
-
|
130
|
-
- !binary |-
|
131
|
-
bGliL3R1cmJ1bGVuY2UvdmVyc2lvbi5yYg==
|
132
|
-
- !binary |-
|
133
|
-
c3BlYy90dXJidWxlbmNlL2NhbGN1bGF0b3JzL2NodXJuX3NwZWMucmI=
|
134
|
-
- !binary |-
|
135
|
-
c3BlYy90dXJidWxlbmNlL2NhbGN1bGF0b3JzL2NvbXBsZXhpdHlfc3BlYy5y
|
136
|
-
Yg==
|
137
|
-
- !binary |-
|
138
|
-
c3BlYy90dXJidWxlbmNlL2NoZWNrc19lbnZpcm9ub21lbnRfc3BlYy5yYg==
|
139
|
-
- !binary |-
|
140
|
-
c3BlYy90dXJidWxlbmNlL2NvbW1hbmRfbGluZV9pbnRlcmZhY2Vfc3BlYy5y
|
141
|
-
Yg==
|
142
|
-
- !binary |-
|
143
|
-
c3BlYy90dXJidWxlbmNlL2dlbmVyYXRvcnMvc2NhdHRlcl9wbG90X3NwZWMu
|
144
|
-
cmI=
|
145
|
-
- !binary |-
|
146
|
-
c3BlYy90dXJidWxlbmNlL2dlbmVyYXRvcnMvdHJlZW1hcF9zcGVjLnJi
|
147
|
-
- !binary |-
|
148
|
-
c3BlYy90dXJidWxlbmNlL3NjbS9naXRfc3BlYy5yYg==
|
149
|
-
- !binary |-
|
150
|
-
c3BlYy90dXJidWxlbmNlL3NjbS9wZXJmb3JjZV9zcGVjLnJi
|
151
|
-
- !binary |-
|
152
|
-
c3BlYy90dXJidWxlbmNlL3R1cmJ1bGVuY2Vfc3BlYy5yYg==
|
153
|
-
- !binary |-
|
154
|
-
dGVtcGxhdGUvaGlnaGNoYXJ0X3RlbXBsYXRlLmpzLmVyYg==
|
155
|
-
- !binary |-
|
156
|
-
dGVtcGxhdGUvaGlnaGNoYXJ0cy5qcw==
|
157
|
-
- !binary |-
|
158
|
-
dGVtcGxhdGUvanF1ZXJ5Lm1pbi5qcw==
|
159
|
-
- !binary |-
|
160
|
-
dGVtcGxhdGUvdHJlZW1hcC5odG1s
|
161
|
-
- !binary |-
|
162
|
-
dGVtcGxhdGUvdHVyYnVsZW5jZS5odG1s
|
163
|
-
- !binary |-
|
164
|
-
dHVyYnVsZW5jZS5nZW1zcGVj
|
165
|
-
- !binary |-
|
166
|
-
d2luX3Jha2VmaWxlX2xvY2F0aW9uX2ZpeC5yYg==
|
95
|
+
- .gitignore
|
96
|
+
- .travis.yml
|
97
|
+
- Gemfile
|
98
|
+
- Gemfile.lock
|
99
|
+
- README.md
|
100
|
+
- Rakefile
|
101
|
+
- bin/bule
|
102
|
+
- lib/turbulence.rb
|
103
|
+
- lib/turbulence/calculators/churn.rb
|
104
|
+
- lib/turbulence/calculators/complexity.rb
|
105
|
+
- lib/turbulence/checks_environment.rb
|
106
|
+
- lib/turbulence/command_line_interface.rb
|
107
|
+
- lib/turbulence/file_name_mangler.rb
|
108
|
+
- lib/turbulence/generators/scatterplot.rb
|
109
|
+
- lib/turbulence/generators/treemap.rb
|
110
|
+
- lib/turbulence/scm/git.rb
|
111
|
+
- lib/turbulence/scm/perforce.rb
|
112
|
+
- lib/turbulence/version.rb
|
113
|
+
- spec/turbulence/calculators/churn_spec.rb
|
114
|
+
- spec/turbulence/calculators/complexity_spec.rb
|
115
|
+
- spec/turbulence/checks_environoment_spec.rb
|
116
|
+
- spec/turbulence/command_line_interface_spec.rb
|
117
|
+
- spec/turbulence/generators/scatter_plot_spec.rb
|
118
|
+
- spec/turbulence/generators/treemap_spec.rb
|
119
|
+
- spec/turbulence/scm/git_spec.rb
|
120
|
+
- spec/turbulence/scm/perforce_spec.rb
|
121
|
+
- spec/turbulence/turbulence_spec.rb
|
122
|
+
- template/highchart_template.js.erb
|
123
|
+
- template/highcharts.js
|
124
|
+
- template/jquery.min.js
|
125
|
+
- template/treemap.html
|
126
|
+
- template/turbulence.html
|
127
|
+
- turbulence.gemspec
|
128
|
+
- win_rakefile_location_fix.rb
|
167
129
|
homepage: http://chadfowler.com
|
168
130
|
licenses: []
|
169
131
|
metadata: {}
|
@@ -173,39 +135,27 @@ require_paths:
|
|
173
135
|
- lib
|
174
136
|
required_ruby_version: !ruby/object:Gem::Requirement
|
175
137
|
requirements:
|
176
|
-
- -
|
138
|
+
- - '>='
|
177
139
|
- !ruby/object:Gem::Version
|
178
140
|
version: 1.8.7
|
179
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
142
|
requirements:
|
181
|
-
- -
|
143
|
+
- - '>='
|
182
144
|
- !ruby/object:Gem::Version
|
183
145
|
version: '0'
|
184
146
|
requirements: []
|
185
147
|
rubyforge_project: turbulence
|
186
|
-
rubygems_version: 2.0.
|
148
|
+
rubygems_version: 2.0.6
|
187
149
|
signing_key:
|
188
150
|
specification_version: 4
|
189
151
|
summary: Automates churn + flog scoring on a git repo for a Ruby project
|
190
152
|
test_files:
|
191
|
-
-
|
192
|
-
|
193
|
-
-
|
194
|
-
|
195
|
-
|
196
|
-
-
|
197
|
-
|
198
|
-
-
|
199
|
-
|
200
|
-
Yg==
|
201
|
-
- !binary |-
|
202
|
-
c3BlYy90dXJidWxlbmNlL2dlbmVyYXRvcnMvc2NhdHRlcl9wbG90X3NwZWMu
|
203
|
-
cmI=
|
204
|
-
- !binary |-
|
205
|
-
c3BlYy90dXJidWxlbmNlL2dlbmVyYXRvcnMvdHJlZW1hcF9zcGVjLnJi
|
206
|
-
- !binary |-
|
207
|
-
c3BlYy90dXJidWxlbmNlL3NjbS9naXRfc3BlYy5yYg==
|
208
|
-
- !binary |-
|
209
|
-
c3BlYy90dXJidWxlbmNlL3NjbS9wZXJmb3JjZV9zcGVjLnJi
|
210
|
-
- !binary |-
|
211
|
-
c3BlYy90dXJidWxlbmNlL3R1cmJ1bGVuY2Vfc3BlYy5yYg==
|
153
|
+
- spec/turbulence/calculators/churn_spec.rb
|
154
|
+
- spec/turbulence/calculators/complexity_spec.rb
|
155
|
+
- spec/turbulence/checks_environoment_spec.rb
|
156
|
+
- spec/turbulence/command_line_interface_spec.rb
|
157
|
+
- spec/turbulence/generators/scatter_plot_spec.rb
|
158
|
+
- spec/turbulence/generators/treemap_spec.rb
|
159
|
+
- spec/turbulence/scm/git_spec.rb
|
160
|
+
- spec/turbulence/scm/perforce_spec.rb
|
161
|
+
- spec/turbulence/turbulence_spec.rb
|