Class: Churn::SourceControl
- Inherits:
-
Object
- Object
- Churn::SourceControl
- Defined in:
- lib/churn/source_control.rb
Overview
Base clase for analyzing various SCM systems like git, HG, and SVN
Direct Known Subclasses
Instance Method Summary collapse
- #get_updated_files_change_info(revision, revisions) ⇒ Object
- #get_updated_files_from_log(revision, revisions) ⇒ Object
-
#initialize(start_date = nil) ⇒ SourceControl
constructor
A new instance of SourceControl.
Constructor Details
#initialize(start_date = nil) ⇒ SourceControl
Returns a new instance of SourceControl.
5 6 7 |
# File 'lib/churn/source_control.rb', line 5 def initialize(start_date=nil) @start_date = start_date end |
Instance Method Details
#get_updated_files_change_info(revision, revisions) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/churn/source_control.rb', line 9 def get_updated_files_change_info(revision, revisions) updated = {} logs = get_updated_files_from_log(revision, revisions) recent_file = nil logs.each do |line| if line.match(/^---/) || line.match(/^\+\+\+/) # Remove the --- a/ and +++ b/ if present recent_file = get_recent_file(line) updated[recent_file] = [] unless updated.include?(recent_file) elsif line.match(/^@@/) # Now add the added/removed ranges for the line removed_range = get_changed_range(line, '-') added_range = get_changed_range(line, '\+') updated[recent_file] << removed_range updated[recent_file] << added_range else puts line.match(/^---/) raise "diff lines that don't match the two patterns aren't expected: '#{line}'" end end updated end |
#get_updated_files_from_log(revision, revisions) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/churn/source_control.rb', line 32 def get_updated_files_from_log(revision, revisions) current_index = revisions.index(revision) previous_index = current_index+1 previous_revision = revisions[previous_index] unless revisions.length < previous_index if revision && previous_revision get_diff(revision, previous_revision) else [] end end |