Base
RSCM implementation for Subversion.
You need the svn/svnadmin executable on the PATH in order for it to work.
NOTE: On Cygwin these have to be the win32 builds of svn/svnadmin and not the Cygwin ones.
# File lib/rscm/scm/subversion.rb, line 49 def add(relative_filename, options={}) svn("add #{checkout_dir}/#{relative_filename}", options) end
# File lib/rscm/scm/subversion.rb, line 95 def can_create_central? local? && !path.nil? && !(path == "") end
# File lib/rscm/scm/subversion.rb, line 107 def central_exists? if(local?) File.exists?("#{svnrootdir}/db") else # Do a simple command over the network # If the repo/path doesn't exist, we'll get zero output # on stdout (and an error msg on std err). exists = false cmd = "svn log #{url} -r HEAD" execute(cmd) do |stdout| stdout.each_line do |line| exists = true end end exists end end
# File lib/rscm/scm/subversion.rb, line 203 def checked_out? rootentries = File.expand_path("#{checkout_dir}/.svn/entries") result = File.exists?(rootentries) result end
# File lib/rscm/scm/subversion.rb, line 70 def commit(message, options={}) svn(commit_command(message), options) # We have to do an update to get the local revision right checkout_silent(nil, options) end
# File lib/rscm/scm/subversion.rb, line 136 def create_central(options={}) options = options.dup.merge({:dir => svnrootdir}) native_path = PathConverter.filepath_to_nativepath(svnrootdir, false) mkdir_p(PathConverter.nativepath_to_filepath(native_path)) svnadmin("create #{native_path}", options) if(path != "") options = options.dup.merge({:dir => "."}) # create the directories paths = path.split("/") paths.each_with_index do |p,i| p = paths[0..i] u = "#{repourl}/#{p.join('/')}" svn("mkdir #{u} -m \"Adding directories\"", options) end end end
# File lib/rscm/scm/subversion.rb, line 99 def destroy_central if(File.exist?(svnrootdir) && local?) FileUtils.rm_rf(svnrootdir) else raise "Cannot destroy central repository. '#{svnrootdir}' doesn't exist or central repo isn't local to this machine" end end
# File lib/rscm/scm/subversion.rb, line 80 def diff(path, from, to, options={}, &block) cmd = "svn diff --revision #{from}:#{to} \"#{url}/#{path}\"" execute(cmd, options) do |io| return(block.call(io)) end end
# File lib/rscm/scm/subversion.rb, line 171 def import_central(dir, options={}) import_cmd = "import #{dir} #{url} -m \"#{options[:message]}\"" svn(import_cmd, options) end
# File lib/rscm/scm/subversion.rb, line 153 def install_trigger(trigger_command, trigger_files_checkout_dir, options={}) if (WINDOWS) install_win_trigger(trigger_command, trigger_files_checkout_dir, options) else install_unix_trigger(trigger_command, trigger_files_checkout_dir, options) end end
# File lib/rscm/scm/subversion.rb, line 36 def installed? begin svn("--version", {}) true rescue false end end
# File lib/rscm/scm/subversion.rb, line 76 def label local_revision_identifier.to_s end
# File lib/rscm/scm/subversion.rb, line 53 def move(relative_src, relative_dest, options={}) svn("mv #{checkout_dir}/#{relative_src} #{checkout_dir}/#{relative_dest}", options) end
# File lib/rscm/scm/subversion.rb, line 87 def open(path, native_revision_identifier, options={}, &block) raise "native_revision_identifier cannot be nil" if native_revision_identifier.nil? cmd = "svn cat #{url}/#{path}@#{native_revision_identifier}" execute(cmd, options) do |io| return(block.call(io)) end end
url pointing to the root of the repo
# File lib/rscm/scm/subversion.rb, line 198 def repourl last = (path.nil? || path == "") ? -1 : -(path.length)-2 url[0..last] end
# File lib/rscm/scm/subversion.rb, line 176 def revisions(from_identifier=Time.new.utc, options={}) raise "from_identifer cannot be nil" if from_identifier.nil? options = { :from_identifier => from_identifier, :to_identifier => Time.infinity, :relative_path => "", :dir => Dir.pwd }.merge(options) checkout_dir = PathConverter.filepath_to_nativepath(@checkout_dir, false) revisions = nil command = "svn #{changes_command(options[:from_identifier], options[:to_identifier], options[:relative_path])}" execute(command, options) do |stdout| stdout = StringIO.new(stdout.read) parser = SubversionLogParser.new(stdout, @url, options[:from_identifier], options[:to_identifier], path) revisions = parser.parse_revisions end revisions.cmd = command if store_revisions_command? revisions end
# File lib/rscm/scm/subversion.rb, line 125 def supports_trigger? true # we'll assume it supports trigger even if not local. this is to ensure user interfaces # can display appropriate options, even if the object is not 'fully initialised' # local? end
# File lib/rscm/scm/subversion.rb, line 45 def to_identifier(raw_identifier) raw_identifier.to_i end
# File lib/rscm/scm/subversion.rb, line 57 def transactional? true end
# File lib/rscm/scm/subversion.rb, line 165 def trigger_installed?(trigger_command, trigger_files_checkout_dir, options={}) return false unless File.exist?(post_commit_file) not_already_commented = LineEditor.comment_out(File.new(post_commit_file), /#{Regexp.escape(trigger_command)}/, "# ", "") not_already_commented end
# File lib/rscm/scm/subversion.rb, line 132 def trigger_mechanism "hooks/post-commit" end
# File lib/rscm/scm/subversion.rb, line 161 def uninstall_trigger(trigger_command, trigger_files_checkout_dir, options={}) File.comment_out(post_commit_file, /#{Regexp.escape(trigger_command)}/, nil) end
# File lib/rscm/scm/subversion.rb, line 211 def checkout_silent(to_identifier, options) checkout_dir = PathConverter.filepath_to_nativepath(@checkout_dir, false) mkdir_p(@checkout_dir) if(checked_out?) svn(update_command(to_identifier), options) else svn(checkout_command(to_identifier), options) end end
Generated with the Darkfish Rdoc Generator 2.