Class: Blastr::SourceControl::Subversion

Inherits:
Object
  • Object
show all
Defined in:
lib/scm/svn.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(svn_url) ⇒ Subversion

Returns a new instance of Subversion.



36
37
38
# File 'lib/scm/svn.rb', line 36

def initialize(svn_url)
  @svn_url = Subversion.with_protocol_scheme(svn_url)
end

Class Method Details

.understands_url?(url) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/scm/svn.rb', line 32

def self.understands_url?(url)
  local_repository?(url) or has_protocol_scheme?(url)
end

Instance Method Details

#as_revision(arg) ⇒ Object



44
45
46
47
# File 'lib/scm/svn.rb', line 44

def as_revision(arg)
  raise "Invalid revision: #{arg}" unless arg =~ /^(HEAD)|(\d+)$/
  SubversionRevision.new(arg.to_s)
end

#commits_since(since_revision = as_revision("1")) ⇒ Object



55
56
57
58
# File 'lib/scm/svn.rb', line 55

def commits_since(since_revision = as_revision("1"))
  svn_log_output = svn_log(since_revision)
  svn_log_entries(svn_log_output)
end

#latest_revisionObject



49
50
51
52
53
# File 'lib/scm/svn.rb', line 49

def latest_revision
  entries = commits_since(as_revision("0"))
  return entries.last.revision unless entries.empty?
  SubversionRevision.new("0")
end

#nameObject



30
# File 'lib/scm/svn.rb', line 30

def name; "Subversion"; end

#svn_log_entries(log_output) ⇒ Object



60
61
62
63
64
65
66
67
68
69
# File 'lib/scm/svn.rb', line 60

def svn_log_entries(log_output)
  entries = []
  log_output.scan(/r(\d+)\s\|\s(.*?)\s\|.*?\n\n(.*?)\n(-)+/mu).each do |entry|
    revision = as_revision(entry[0])
    author = entry[1]
    comment = entry[2]
    entries << LogEntry.new(revision, author, comment)
  end
  entries
end

#urlObject



40
41
42
# File 'lib/scm/svn.rb', line 40

def url
  @svn_url
end