churn 1.0.2 → 1.0.4

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.
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