Sha256: 5bf6b46a895ec8677b0fd93b0c57ef03b89417f50295acc0e185af1f0720dfc9
Contents?: true
Size: 1.88 KB
Versions: 9
Compression:
Stored size: 1.88 KB
Contents
require 'cerberus/utils' require 'cerberus/scm/base' class Cerberus::SCM::SVN < Cerberus::SCM::Base def installed? exec_successful? "#{@config[:bin_path]}svn --version" end def update! if test(?d, @path + '/.svn') #check first that it was not locked execute("cleanup") if locked? say "Could not unlock svn directory #{@encoded_path}. Please do it manually." if locked? #In case if we could not unlock from command line - ask user to do it end if test(?d, @path + '/.svn') @status = execute("update") else FileUtils.mkpath(@path) unless test(?d,@path) @status = execute("checkout", nil, @config[:scm, :url]) end end def has_changes? @status =~ /[A-Z]\s+[\w\/]+/ ? true : false end def current_revision info['Revision'].to_i end def url info['URL'] end def last_commit_message message = execute("log", "--limit 1 -v") #strip first line that contains command line itself (svn log --limit ...) if (idx = message.index('-'*72)) message[idx..-1] else message end end def last_author info['Last Changed Author'] end private def locked? execute("st") =~ /^..L/ end def info unless @info output = execute("info") @info = YAML.load(output) if not @info.is_a?(Hash) or @info['Repository UUID'].nil? #.size > 8 say "Could not parse svn output. Seems source directory #{@encoded_path} is corrupted.\n#{output}" end end @info end def execute(command, parameters = nil, pre_parameters = nil) `#{@config[:bin_path]}svn #{command} #{auth_options()} #{pre_parameters} #{@encoded_path} #{parameters}` end def auth_options auth = [] auth << "--username #{@config[:scm, :user_name]}" if @config[:scm, :user_name] auth << "--password #{@config[:scm, :password]}" if @config[:scm, :password] auth.join(' ') end end
Version data entries
9 entries across 9 versions & 2 rubygems