75 lines
2.2 KiB
Ruby
75 lines
2.2 KiB
Ruby
require 'ftools'
|
|
|
|
class SvnClient
|
|
attr_accessor :username, :password, :options, :quiet
|
|
def initialize
|
|
@username = ''
|
|
@password = ''
|
|
@options = ''
|
|
@quiet = false
|
|
end
|
|
def checkout(url, path)
|
|
puts "Checking out \"#{url}\" to \"#{full(path)}\"..." unless quiet
|
|
cmd = "svn co \"#{url}\" \"#{path}\" #{@options} #{global_options()}"
|
|
run(cmd)
|
|
end
|
|
def update(path)
|
|
puts "Updating working copy on \"#{full(path)}\"..." unless quiet
|
|
cmd = "svn up \"#{path}\" #{@options} #{global_options()}"
|
|
run(cmd)
|
|
end
|
|
def commit(path, message)
|
|
puts "Committing \"#{full(path)}\"..." unless quiet
|
|
cmd = "svn ci \"#{path}\" #{@options} -m \"#{message}\" #{global_options()}"
|
|
run(cmd)
|
|
end
|
|
def switch(url, path)
|
|
puts "Switching to \"#{url}\" on \"#{full(path)}\"..." unless quiet
|
|
cmd = "svn sw \"#{url}\" \"#{path}\" #{@options} #{global_options()}"
|
|
run(cmd)
|
|
end
|
|
def revert(path)
|
|
puts "Reverting \"#{full(path)}\"..." unless quiet
|
|
cmd = "svn revert \"#{path}\" #{@options} #{global_options()}"
|
|
run(cmd)
|
|
end
|
|
def export(url, path)
|
|
puts "Exporting \"#{url}\" to \"#{full(path)}\"..." unless quiet
|
|
cmd = "svn export \"#{url}\" \"#{path}\" #{@options} #{global_options()}"
|
|
run(cmd)
|
|
end
|
|
def copy(src, dst, message)
|
|
puts "Copying \"#{src}\" to \"#{dst}\"..." unless quiet
|
|
cmd = "svn cp \"#{src}\" \"#{dst}\" #{@options} -m \"#{message}\" #{global_options()}"
|
|
run(cmd)
|
|
end
|
|
def check_for_modifications(path)
|
|
puts "Checking \"#{full(path)}\" for local modifications..." unless quiet
|
|
result = `svn stat #{path} #{global_options}`
|
|
result.include?('M ') ? true : false
|
|
end
|
|
def get_rev_num(path)
|
|
result = `svn info #{path} #{global_options}`
|
|
key_str = 'Last Changed Rev: '
|
|
from = result.index(key_str) + key_str.length
|
|
to = result.index("\n", from)
|
|
result.slice(from, to - from)
|
|
end
|
|
def last_error()
|
|
@error ? @error : -1
|
|
end
|
|
private
|
|
def run(cmd)
|
|
cmd.concat(' >> nul') if quiet
|
|
result = system(cmd)
|
|
@error = $?
|
|
return result
|
|
end
|
|
def global_options()
|
|
"--username #{@username} --password #{@password} --no-auth-cache --non-interactive"
|
|
end
|
|
def full(path)
|
|
File.expand_path(path)
|
|
end
|
|
end
|