Class: Svn
- Inherits:
-
Object
- Object
- Svn
- Defined in:
- lib/svn.rb
Class Method Summary collapse
-
.publish(source_dir, destination, source_glob = '**/*') ⇒ Object
source_glob defaults to ‘*/’ to publish all files in the source_dir.
Class Method Details
.publish(source_dir, destination, source_glob = '**/*') ⇒ Object
source_glob defaults to ‘*/’ to publish all files in the source_dir
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/svn.rb', line 9 def self.publish source_dir, destination, source_glob='**/*' raise "Svn.publish: destination #{destination} already exists" if(`svn info #{destination} 2>&1`.include?('Revision:')) # create subversion directory if(!`svn mkdir #{destination} --parents --message mkdir_for_publishing`.include?('Committed')) raise "failure 'svn mkdir #{destination} --parents --message mkdir_for_publishing'" end files=nil Dir.chdir(source_dir) do files=FileList.new(source_glob).to_a end pwd=Dir.pwd Dir.mktmpdir{|dir| # checkout new subversion directory if(!`svn checkout #{destination} to_publish_checkout`.include?('Checked out')) raise "failure 'svn checkout #{destination} to_publish_checkout'" end # copy files into the checkout out subversion directory to_publish raise "to_publish_checkout does not exist" if(!File.exists?('to_publish_checkout')) Dir.chdir('to_publish_checkout') do File.open('add.txt','w'){|add_file| files.each{|f| fdir=File.dirname(f) FileUtils.mkdir_p(fdir) if(fdir.length > 0 && !File.exists?(fdir)) FileUtils.cp("#{source_dir}/#{f}","#{f}") add_file.puts f } add_file.close } `svn add --parents --targets add.txt 2>&1` commit_output = `svn commit -m"add" 2>&1` if(!commit_output.include?("Committed")) raise "failure 'svn commit -m'added files''" end end FileUtils.rm_r 'to_publish_checkout' } end |