From c1a56612adc1073dc376a9922340084d7a57836e Mon Sep 17 00:00:00 2001 From: Marius Nuennerich Date: Fri, 7 Jan 2011 04:06:24 +0100 Subject: [PATCH] add subversion support --- extras/big_tuna/vcs/subversion.rb | 43 +++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 extras/big_tuna/vcs/subversion.rb diff --git a/extras/big_tuna/vcs/subversion.rb b/extras/big_tuna/vcs/subversion.rb new file mode 100644 index 0000000..d408edf --- /dev/null +++ b/extras/big_tuna/vcs/subversion.rb @@ -0,0 +1,43 @@ +module BigTuna::VCS + class Subversion < Base + NAME = "Subversion" + VALUE = "svn" + + def self.supported? + return @_supported unless @_supported.nil? + begin + @_supported = BigTuna::Runner.execute(Dir.pwd, "svn --version").ok? + rescue BigTuna::Runner::Error => e + @_supported = false + end + @_supported + end + + def head_info + info = {} + command = "svn log -l 1" + begin + output = BigTuna::Runner.execute(source, command) + rescue BigTuna::Runner::Error => e + raise BigTuna::VCS::Error.new("Couldn't access repository log") + end + log = output.stdout[1].match(/(\S+) \| (\S+) \| (.+) \|/) + info[:commit] = log[1] + info[:author] = log[2] + email = begin + YAML.load(File.read('config/email_addresses.yml'))[log[2]] + rescue + nil + end + info[:email] = email + info[:committed_at] = Time.parse(log[3]) + info[:commit_message] = output.stdout[3..-2] + [info, command] + end + + def clone(where_to) + command = "svn checkout #{source} #{where_to}" + BigTuna::Runner.execute(Dir.pwd, command) + end + end +end