churn 1.0.2 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +5 -5
  2. data/{LICENSE → LICENSE.txt} +0 -0
  3. data/README.md +137 -120
  4. data/bin/churn +27 -12
  5. data/churn.gemspec +7 -21
  6. data/lib/churn/calculator.rb +24 -11
  7. data/lib/churn/history.rb +1 -1
  8. data/lib/churn/location_mapping.rb +1 -1
  9. data/lib/churn/options.rb +7 -3
  10. data/lib/churn/scm/bzr_analyzer.rb +11 -4
  11. data/lib/churn/scm/git_analyzer.rb +5 -3
  12. data/lib/churn/scm/hg_analyzer.rb +11 -4
  13. data/lib/churn/scm/source_control.rb +6 -8
  14. data/lib/churn/scm/svn_analyzer.rb +9 -3
  15. data/lib/churn/version.rb +1 -1
  16. metadata +24 -190
  17. data/.deferred_server +0 -1
  18. data/.document +0 -5
  19. data/.gitignore +0 -11
  20. data/.travis.yml +0 -6
  21. data/Gemfile +0 -3
  22. data/Gemfile.lock +0 -79
  23. data/Rakefile +0 -41
  24. data/doc/Churn.html +0 -165
  25. data/doc/Churn/BzrAnalyzer.html +0 -276
  26. data/doc/Churn/ChurnCalculator.html +0 -578
  27. data/doc/Churn/ChurnHistory.html +0 -250
  28. data/doc/Churn/ChurnOptions.html +0 -393
  29. data/doc/Churn/GitAnalyzer.html +0 -311
  30. data/doc/Churn/HgAnalyzer.html +0 -276
  31. data/doc/Churn/LocationMapping.html +0 -448
  32. data/doc/Churn/SourceControl.html +0 -451
  33. data/doc/Churn/SvnAnalyzer.html +0 -311
  34. data/doc/LICENSE.html +0 -123
  35. data/doc/Object.html +0 -246
  36. data/doc/created.rid +0 -15
  37. data/doc/images/add.png +0 -0
  38. data/doc/images/arrow_up.png +0 -0
  39. data/doc/images/brick.png +0 -0
  40. data/doc/images/brick_link.png +0 -0
  41. data/doc/images/bug.png +0 -0
  42. data/doc/images/bullet_black.png +0 -0
  43. data/doc/images/bullet_toggle_minus.png +0 -0
  44. data/doc/images/bullet_toggle_plus.png +0 -0
  45. data/doc/images/date.png +0 -0
  46. data/doc/images/delete.png +0 -0
  47. data/doc/images/find.png +0 -0
  48. data/doc/images/loadingAnimation.gif +0 -0
  49. data/doc/images/macFFBgHack.png +0 -0
  50. data/doc/images/package.png +0 -0
  51. data/doc/images/page_green.png +0 -0
  52. data/doc/images/page_white_text.png +0 -0
  53. data/doc/images/page_white_width.png +0 -0
  54. data/doc/images/plugin.png +0 -0
  55. data/doc/images/ruby.png +0 -0
  56. data/doc/images/tag_blue.png +0 -0
  57. data/doc/images/tag_green.png +0 -0
  58. data/doc/images/transparent.png +0 -0
  59. data/doc/images/wrench.png +0 -0
  60. data/doc/images/wrench_orange.png +0 -0
  61. data/doc/images/zoom.png +0 -0
  62. data/doc/index.html +0 -100
  63. data/doc/js/darkfish.js +0 -155
  64. data/doc/js/jquery.js +0 -18
  65. data/doc/js/navigation.js +0 -142
  66. data/doc/js/search.js +0 -94
  67. data/doc/js/search_index.js +0 -1
  68. data/doc/js/searcher.js +0 -228
  69. data/doc/rdoc.css +0 -595
  70. data/doc/table_of_contents.html +0 -167
  71. data/test/data/churn_calculator.rb +0 -217
  72. data/test/data/test_helper.rb +0 -14
  73. data/test/test_helper.rb +0 -21
  74. data/test/unit/bzr_analyzer_test.rb +0 -65
  75. data/test/unit/churn_calculator_test.rb +0 -181
  76. data/test/unit/churn_history_test.rb +0 -24
  77. data/test/unit/churn_options_test.rb +0 -16
  78. data/test/unit/git_analyzer_test.rb +0 -88
  79. data/test/unit/hg_analyzer_test.rb +0 -66
  80. data/test/unit/location_mapping_test.rb +0 -35
  81. data/test/unit/source_control_test.rb +0 -22
  82. data/test/unit/svn_analyzer_test.rb +0 -65
@@ -14,7 +14,7 @@ module Churn
14
14
  def self.load_revision_data(revision, data_directory)
15
15
  #load revision data from scratch folder if it exists
16
16
  filename = "#{data_directory}/#{revision}.json"
17
- if File.exists?(filename)
17
+ if File.exist?(filename)
18
18
  begin
19
19
  json_data = File.read(filename)
20
20
  data = JSON.parse(json_data)
@@ -2,7 +2,7 @@ module Churn
2
2
 
3
3
  # Given a ruby file, map the klass and methods to a range of line numbers
4
4
  # The klass and method to line numbers mappings, are stored in
5
- # @klasses_collection and @methods_collection
5
+ # klasses_collection and methods_collection
6
6
  # this is based off https://github.com/seattlerb/ruby_parser which seems to have some known line number bugs
7
7
  # perhaps look at and move more to the style of line numbers from metric_fu
8
8
  # https://github.com/metricfu/metric_fu/blob/master/lib/data_structures/line_numbers.rb
@@ -9,8 +9,8 @@ module Churn
9
9
  DEFAULT_START_TIME = '3 months ago'
10
10
  DEFAULT_REPORT_HOST = 'http://churn.picoappz.com'
11
11
 
12
- attr_accessor :data_directory, :minimum_churn_count, :ignores, :start_date, :history, :report_host, :name
13
-
12
+ attr_accessor :data_directory, :minimum_churn_count, :ignores, :start_date, :history, :report_host, :name, :file_extension, :file_prefix
13
+
14
14
  def initialize()
15
15
  @data_directory = DEFAULT_CHURN_DIRECTORY
16
16
  @minimum_churn_count = DEFAULT_MINIMUM_CHURN_COUNT
@@ -19,12 +19,16 @@ module Churn
19
19
  @history = nil
20
20
  @report_host = nil
21
21
  @name = nil
22
+ @file_extension = nil
23
+ @file_prefix = nil
22
24
  end
23
25
 
24
26
  def set_options(options = {})
25
27
  @data_directory = options.fetch(:data_directory){ @data_directory } unless options[:data_directory]==''
28
+ @file_extension = options.fetch(:file_extension){ @file_extension } unless options[:file_extension]==''
29
+ @file_prefix = options.fetch(:file_prefix){ @file_prefix } unless options[:file_prefix]==''
26
30
  @minimum_churn_count = options.fetch(:minimum_churn_count){ @minimum_churn_count }.to_i
27
- @ignores = (options.fetch(:ignores){ @ignores }).to_s.split(',').map(&:strip)
31
+ @ignores = (options.fetch(:ignore_files){ options[:ignores] || @ignores }).to_s.split(',').map(&:strip)
28
32
  @ignores << '/dev/null' unless @ignores.include?('/dev/null')
29
33
  @start_date = options[:start_date] if !options[:start_date].nil? && options[:start_date]!=''
30
34
  @history = options[:history] if !options[:history].nil? && options[:history]!=''
@@ -1,26 +1,34 @@
1
1
  module Churn
2
2
 
3
- #analizes Bzr / Bazaar SCM to find recently changed files, and what lines have been altered
3
+ # Analyzes Bzr / Bazaar SCM, to find recently changed files, and what lines have been altered
4
4
  class BzrAnalyzer < SourceControl
5
5
 
6
+ # @return [Boolean]
6
7
  def self.supported?
7
- !!(`bzr nick 2>&1` && $?.success?)
8
+ !!(`bzr nick 2>&1` && cmd_success?)
8
9
  end
9
10
 
11
+ # @return [Array]
10
12
  def get_logs
11
13
  `bzr log -v --short #{date_range}`.split("\n").reject{|line| line !~ /^[ ]*(M|A) /}.map{|line| line.strip.split(" ")[1..-1]}.flatten
12
14
  end
13
15
 
16
+ # @return [Array]
14
17
  def get_revisions
15
18
  `bzr log --line #{date_range}`.split("\n").map{|line| line[/^(\S+):/, 1] }
16
19
  end
17
20
 
21
+ # @raise RunTimeError Currently, the generate history option does not support Bazaar
18
22
  def generate_history(starting_point)
19
- raise "currently the generate history option does not support bazaar"
23
+ raise NotImplementedError, "currently the generate history option does not support bazaar"
20
24
  end
21
25
 
22
26
  private
23
27
 
28
+ def self.cmd_success?
29
+ $?.success?
30
+ end
31
+
24
32
  def get_diff(revision, previous_revision)
25
33
  `bzr diff -r #{previous_revision}..#{revision}`.split(/\n/).select{|line| /^@@|^---|^\+\+\+/ =~ line }
26
34
  end
@@ -35,6 +43,5 @@ module Churn
35
43
  def get_recent_file(line)
36
44
  super(line).split("\t")[0]
37
45
  end
38
-
39
46
  end
40
47
  end
@@ -1,16 +1,19 @@
1
1
  module Churn
2
2
 
3
- #analizes git SCM to find recently changed files, and what lines have been altered
3
+ # Analyzes git SCM to find recently changed files, and what lines have been altered
4
4
  class GitAnalyzer < SourceControl
5
5
 
6
+ # @return [Boolean]
6
7
  def self.supported?
7
8
  !!(`git branch 2>&1` && $?.success?)
8
9
  end
9
10
 
11
+ # @return [Array]
10
12
  def get_logs
11
13
  `git log #{date_range} --name-only --pretty=format:`.split(/\n/).reject{|line| line == ""}
12
14
  end
13
15
 
16
+ # @return [Array]
14
17
  def get_revisions
15
18
  `git log #{date_range} --pretty=format:"%H"`.split(/\n/).reject{|line| line == ""}
16
19
  end
@@ -36,7 +39,7 @@ module Churn
36
39
  end
37
40
 
38
41
  def get_diff(revision, previous_revision)
39
- `git diff #{revision} #{previous_revision} --unified=0`.split(/\n/).select{|line| /^@@|^---|^\+\+\+/ =~ line }
42
+ `git diff #{revision} #{previous_revision} --no-ext-diff --unified=0`.split(/\n/).select{|line| /^@@|^---|^\+\+\+/ =~ line }
40
43
  end
41
44
 
42
45
  def date_range
@@ -45,6 +48,5 @@ module Churn
45
48
  "--after=#{date.strftime('%Y-%m-%d')}"
46
49
  end
47
50
  end
48
-
49
51
  end
50
52
  end
@@ -1,26 +1,34 @@
1
1
  module Churn
2
2
 
3
- #analizes Hg / Mercurial SCM to find recently changed files, and what lines have been altered
3
+ # Analyzes Hg / Mercurial SCM to find recently changed files, and what lines have been altered
4
4
  class HgAnalyzer < SourceControl
5
5
 
6
+ # @return [Array]
6
7
  def self.supported?
7
- !!(`hg branch 2>&1` && $?.success?)
8
+ !!(`hg branch 2>&1` && cmd_success?)
8
9
  end
9
10
 
11
+ # @return [Array]
10
12
  def get_logs
11
13
  `hg log -v#{date_range}`.split("\n").reject{|line| line !~ /^files:/}.map{|line| line.split(" ")[1..-1]}.flatten
12
14
  end
13
15
 
16
+ # @return [Array]
14
17
  def get_revisions
15
18
  `hg log#{date_range}`.split("\n").reject{|line| line !~ /^changeset:/}.map{|line| line[/:(\S+)$/, 1] }
16
19
  end
17
20
 
21
+ # @raise RunTimeError Currently, the generate history option does not support Mercurial
18
22
  def generate_history(starting_point)
19
- raise "currently the generate history option does not support mercurial"
23
+ raise NotImplementedError, "currently the generate history option does not support mercurial"
20
24
  end
21
25
 
22
26
  private
23
27
 
28
+ def self.cmd_success?
29
+ $?.success?
30
+ end
31
+
24
32
  def get_diff(revision, previous_revision)
25
33
  `hg diff -r #{revision}:#{previous_revision} -U 0`.split(/\n/).select{|line| /^@@|^---|^\+\+\+/ =~ line }
26
34
  end
@@ -35,6 +43,5 @@ module Churn
35
43
  def get_recent_file(line)
36
44
  super(line).split("\t")[0]
37
45
  end
38
-
39
46
  end
40
47
  end
@@ -1,6 +1,6 @@
1
1
  module Churn
2
2
 
3
- # Base clase for analyzing various SCM systems like git, HG, and SVN
3
+ # Base class for analyzing various SCM systems like git, HG, and SVN
4
4
  class SourceControl
5
5
 
6
6
  def self.set_source_control(start_date)
@@ -13,8 +13,9 @@ module Churn
13
13
  end
14
14
  end
15
15
 
16
+ # @api public
16
17
  def self.supported?
17
- raise "child class must implement"
18
+ raise NotImplementedError, "child class must implement"
18
19
  end
19
20
 
20
21
  def initialize(start_date=nil)
@@ -22,15 +23,15 @@ module Churn
22
23
  end
23
24
 
24
25
  def get_logs
25
- raise "child class must implement"
26
+ raise NotImplementedError, "child class must implement"
26
27
  end
27
28
 
28
29
  def get_revisions
29
- raise "child class must implement"
30
+ raise NotImplementedError, "child class must implement"
30
31
  end
31
32
 
32
33
  def generate_history(starting_point)
33
- raise "child class must implement"
34
+ raise NotImplementedError, "child class must implement"
34
35
  end
35
36
 
36
37
  def get_updated_files_change_info(revision, revisions)
@@ -49,7 +50,6 @@ module Churn
49
50
  updated[recent_file] << removed_range
50
51
  updated[recent_file] << added_range
51
52
  else
52
- puts /^---/ =~ line
53
53
  raise "diff lines that don't match the two patterns aren't expected: '#{line}'"
54
54
  end
55
55
  end
@@ -87,7 +87,5 @@ module Churn
87
87
  def get_recent_file(line)
88
88
  line.gsub(/^--- /,'').gsub(/^\+\+\+ /,'').gsub(/^a\//,'').gsub(/^b\//,'')
89
89
  end
90
-
91
90
  end
92
-
93
91
  end
@@ -1,25 +1,31 @@
1
1
  module Churn
2
2
 
3
- #analizes SVN SCM to find recently changed files, and what lines have been altered
3
+ # Analyzes SVN SCM to find recently changed files, and what lines have been altered
4
4
  class SvnAnalyzer < SourceControl
5
5
 
6
+ # @return [Boolean]
6
7
  def self.supported?
7
8
  File.exist?(".svn")
8
9
  end
9
10
 
11
+ # @return [Array]
10
12
  def get_logs
11
13
  `svn log --verbose#{date_range}#{svn_credentials}`.split(/\n/).map { |line| clean_up_svn_line(line) }.compact
12
14
  end
13
15
 
16
+ # @raise RunTimeError Currently, the generate history option does not support Subversion
14
17
  def generate_history(starting_point)
15
- raise "currently the generate history option does not support subversion"
18
+ raise NotImplementedError, "currently the generate history option does not support subversion"
16
19
  end
17
20
 
18
- #below 2 methods aren't supported by SVN so they become noops
21
+ # This method is not supported by SVN
22
+ # @return [Array]
19
23
  def get_revisions
20
24
  []
21
25
  end
22
26
 
27
+ # This method is not supported by SVN
28
+ # @return [Hash]
23
29
  def get_updated_files_change_info(revision, revisions)
24
30
  {}
25
31
  end
@@ -1,3 +1,3 @@
1
1
  module Churn
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.4"
3
3
  end
metadata CHANGED
@@ -1,209 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: churn
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Mayer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2012-12-17 00:00:00.000000000 Z
11
+ date: 2019-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: minitest
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '5.3'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '5.3'
27
- - !ruby/object:Gem::Dependency
28
- name: shoulda
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: test_construct
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ~>
46
- - !ruby/object:Gem::Version
47
- version: 2.0.0
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ~>
53
- - !ruby/object:Gem::Version
54
- version: 2.0.0
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: mocha
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ~>
74
- - !ruby/object:Gem::Version
75
- version: 1.1.0
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ~>
81
- - !ruby/object:Gem::Version
82
- version: 1.1.0
83
- - !ruby/object:Gem::Dependency
84
- name: simplecov
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '>='
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rdoc
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
13
  - !ruby/object:Gem::Dependency
112
14
  name: main
113
15
  requirement: !ruby/object:Gem::Requirement
114
16
  requirements:
115
- - - '>='
17
+ - - ">="
116
18
  - !ruby/object:Gem::Version
117
19
  version: '0'
118
20
  type: :runtime
119
21
  prerelease: false
120
22
  version_requirements: !ruby/object:Gem::Requirement
121
23
  requirements:
122
- - - '>='
24
+ - - ">="
123
25
  - !ruby/object:Gem::Version
124
26
  version: '0'
125
27
  - !ruby/object:Gem::Dependency
126
28
  name: json_pure
127
29
  requirement: !ruby/object:Gem::Requirement
128
30
  requirements:
129
- - - '>='
31
+ - - ">="
130
32
  - !ruby/object:Gem::Version
131
33
  version: '0'
132
34
  type: :runtime
133
35
  prerelease: false
134
36
  version_requirements: !ruby/object:Gem::Requirement
135
37
  requirements:
136
- - - '>='
38
+ - - ">="
137
39
  - !ruby/object:Gem::Version
138
40
  version: '0'
139
41
  - !ruby/object:Gem::Dependency
140
42
  name: chronic
141
43
  requirement: !ruby/object:Gem::Requirement
142
44
  requirements:
143
- - - '>='
45
+ - - ">="
144
46
  - !ruby/object:Gem::Version
145
47
  version: 0.2.3
146
48
  type: :runtime
147
49
  prerelease: false
148
50
  version_requirements: !ruby/object:Gem::Requirement
149
51
  requirements:
150
- - - '>='
52
+ - - ">="
151
53
  - !ruby/object:Gem::Version
152
54
  version: 0.2.3
153
55
  - !ruby/object:Gem::Dependency
154
56
  name: sexp_processor
155
57
  requirement: !ruby/object:Gem::Requirement
156
58
  requirements:
157
- - - ~>
59
+ - - "~>"
158
60
  - !ruby/object:Gem::Version
159
61
  version: '4.1'
160
62
  type: :runtime
161
63
  prerelease: false
162
64
  version_requirements: !ruby/object:Gem::Requirement
163
65
  requirements:
164
- - - ~>
66
+ - - "~>"
165
67
  - !ruby/object:Gem::Version
166
68
  version: '4.1'
167
69
  - !ruby/object:Gem::Dependency
168
70
  name: ruby_parser
169
71
  requirement: !ruby/object:Gem::Requirement
170
72
  requirements:
171
- - - ~>
73
+ - - "~>"
172
74
  - !ruby/object:Gem::Version
173
75
  version: '3.0'
174
76
  type: :runtime
175
77
  prerelease: false
176
78
  version_requirements: !ruby/object:Gem::Requirement
177
79
  requirements:
178
- - - ~>
80
+ - - "~>"
179
81
  - !ruby/object:Gem::Version
180
82
  version: '3.0'
181
83
  - !ruby/object:Gem::Dependency
182
84
  name: hirb
183
85
  requirement: !ruby/object:Gem::Requirement
184
86
  requirements:
185
- - - '>='
87
+ - - ">="
186
88
  - !ruby/object:Gem::Version
187
89
  version: '0'
188
90
  type: :runtime
189
91
  prerelease: false
190
92
  version_requirements: !ruby/object:Gem::Requirement
191
93
  requirements:
192
- - - '>='
94
+ - - ">="
193
95
  - !ruby/object:Gem::Version
194
96
  version: '0'
195
97
  - !ruby/object:Gem::Dependency
196
98
  name: rest-client
197
99
  requirement: !ruby/object:Gem::Requirement
198
100
  requirements:
199
- - - '>='
101
+ - - ">="
200
102
  - !ruby/object:Gem::Version
201
103
  version: 1.6.0
202
104
  type: :runtime
203
105
  prerelease: false
204
106
  version_requirements: !ruby/object:Gem::Requirement
205
107
  requirements:
206
- - - '>='
108
+ - - ">="
207
109
  - !ruby/object:Gem::Version
208
110
  version: 1.6.0
209
111
  description: 'High method and class churn has been shown to have increased bug and
@@ -213,68 +115,12 @@ email: dan@mayerdan.com
213
115
  executables:
214
116
  - churn
215
117
  extensions: []
216
- extra_rdoc_files:
217
- - LICENSE
218
- - README.md
118
+ extra_rdoc_files: []
219
119
  files:
220
- - .deferred_server
221
- - .document
222
- - .gitignore
223
- - .travis.yml
224
- - Gemfile
225
- - Gemfile.lock
226
- - LICENSE
120
+ - LICENSE.txt
227
121
  - README.md
228
- - Rakefile
229
122
  - bin/churn
230
123
  - churn.gemspec
231
- - doc/Churn.html
232
- - doc/Churn/BzrAnalyzer.html
233
- - doc/Churn/ChurnCalculator.html
234
- - doc/Churn/ChurnHistory.html
235
- - doc/Churn/ChurnOptions.html
236
- - doc/Churn/GitAnalyzer.html
237
- - doc/Churn/HgAnalyzer.html
238
- - doc/Churn/LocationMapping.html
239
- - doc/Churn/SourceControl.html
240
- - doc/Churn/SvnAnalyzer.html
241
- - doc/LICENSE.html
242
- - doc/Object.html
243
- - doc/created.rid
244
- - doc/images/add.png
245
- - doc/images/arrow_up.png
246
- - doc/images/brick.png
247
- - doc/images/brick_link.png
248
- - doc/images/bug.png
249
- - doc/images/bullet_black.png
250
- - doc/images/bullet_toggle_minus.png
251
- - doc/images/bullet_toggle_plus.png
252
- - doc/images/date.png
253
- - doc/images/delete.png
254
- - doc/images/find.png
255
- - doc/images/loadingAnimation.gif
256
- - doc/images/macFFBgHack.png
257
- - doc/images/package.png
258
- - doc/images/page_green.png
259
- - doc/images/page_white_text.png
260
- - doc/images/page_white_width.png
261
- - doc/images/plugin.png
262
- - doc/images/ruby.png
263
- - doc/images/tag_blue.png
264
- - doc/images/tag_green.png
265
- - doc/images/transparent.png
266
- - doc/images/wrench.png
267
- - doc/images/wrench_orange.png
268
- - doc/images/zoom.png
269
- - doc/index.html
270
- - doc/js/darkfish.js
271
- - doc/js/jquery.js
272
- - doc/js/navigation.js
273
- - doc/js/search.js
274
- - doc/js/search_index.js
275
- - doc/js/searcher.js
276
- - doc/rdoc.css
277
- - doc/table_of_contents.html
278
124
  - lib/churn.rb
279
125
  - lib/churn/calculator.rb
280
126
  - lib/churn/history.rb
@@ -289,18 +135,6 @@ files:
289
135
  - lib/tasks/churn_tasks.rb
290
136
  - man/churn.1
291
137
  - man/churn.html
292
- - test/data/churn_calculator.rb
293
- - test/data/test_helper.rb
294
- - test/test_helper.rb
295
- - test/unit/bzr_analyzer_test.rb
296
- - test/unit/churn_calculator_test.rb
297
- - test/unit/churn_history_test.rb
298
- - test/unit/churn_options_test.rb
299
- - test/unit/git_analyzer_test.rb
300
- - test/unit/hg_analyzer_test.rb
301
- - test/unit/location_mapping_test.rb
302
- - test/unit/source_control_test.rb
303
- - test/unit/svn_analyzer_test.rb
304
138
  homepage: http://github.com/danmayer/churn
305
139
  licenses:
306
140
  - MIT
@@ -311,17 +145,17 @@ require_paths:
311
145
  - lib
312
146
  required_ruby_version: !ruby/object:Gem::Requirement
313
147
  requirements:
314
- - - '>='
148
+ - - ">="
315
149
  - !ruby/object:Gem::Version
316
- version: '0'
150
+ version: 1.9.3
317
151
  required_rubygems_version: !ruby/object:Gem::Requirement
318
152
  requirements:
319
- - - '>='
153
+ - - ">="
320
154
  - !ruby/object:Gem::Version
321
155
  version: '0'
322
- requirements: []
323
- rubyforge_project: churn
324
- rubygems_version: 2.0.3
156
+ requirements:
157
+ - bzr, git, hg or svn
158
+ rubygems_version: 3.0.3
325
159
  signing_key:
326
160
  specification_version: 4
327
161
  summary: Providing additional churn metrics over the original metric_fu churn