class Churn::HgAnalyzer
Analyzes Hg / Mercurial SCM to find recently changed files, and what lines have been altered
Public Class Methods
supported?()
click to toggle source
@return [Array]
# File lib/churn/scm/hg_analyzer.rb, line 7 def self.supported? !!(`hg branch 2>&1` && cmd_success?) end
Private Class Methods
cmd_success?()
click to toggle source
# File lib/churn/scm/hg_analyzer.rb, line 28 def self.cmd_success? $?.success? end
Public Instance Methods
generate_history(starting_point)
click to toggle source
@raise RunTimeError Currently, the generate history option does not support Mercurial
# File lib/churn/scm/hg_analyzer.rb, line 22 def generate_history(starting_point) raise NotImplementedError, "currently the generate history option does not support mercurial" end
get_logs()
click to toggle source
@return [Array]
# File lib/churn/scm/hg_analyzer.rb, line 12 def get_logs `hg log -v#{date_range}`.split("\n").reject{|line| line !~ /^files:/}.map{|line| line.split(" ")[1..-1]}.flatten end
get_revisions()
click to toggle source
@return [Array]
# File lib/churn/scm/hg_analyzer.rb, line 17 def get_revisions `hg log#{date_range}`.split("\n").reject{|line| line !~ /^changeset:/}.map{|line| line[/:(\S+)$/, 1] } end
Private Instance Methods
date_range()
click to toggle source
# File lib/churn/scm/hg_analyzer.rb, line 36 def date_range if @start_date date = Chronic.parse(@start_date) " -d \"> #{date.strftime('%Y-%m-%d')}\"" end end
get_diff(revision, previous_revision)
click to toggle source
# File lib/churn/scm/hg_analyzer.rb, line 32 def get_diff(revision, previous_revision) `hg diff -r #{revision}:#{previous_revision} -U 0`.split(/\n/).select{|line| /^@@|^---|^\+\+\+/ =~ line } end
get_recent_file(line)
click to toggle source
Calls superclass method
# File lib/churn/scm/hg_analyzer.rb, line 43 def get_recent_file(line) super(line).split("\t")[0] end