# Subversion to server package/deploy script # Written by Rohan Mitchell, December 2009 # Licence: GPL # Email: rohan@rohanmitchell.com # Twitter: @RohanM src = "your_dir_here/" range = ARGV[0] range_hyphenated = range.gsub(':', '-') puts "Getting changed and deleted files..." `cd #{src}; svn diff -r #{range} --summarize > ../changes.txt; cd ..` deleted_files = `cat changes.txt |grep ^D |awk '{ print $2 }'` changed_files = `cat changes.txt |grep -v ^D |awk '{ print $2 }'` deleted_files = deleted_files.split("\n") changed_files = changed_files.split("\n") puts "\nChanged:" puts changed_files.join("\n") puts "\nDeleted:" puts deleted_files.join("\n") puts "\n" # Write delete script puts "Writing delete script..." delete_script = File.open("#{src}delete-#{range_hyphenated}.sh", "w") deleted_files.each do |deleted_file| delete_script.puts("rm #{deleted_file}\n") end delete_script.close # Archive the changed files puts "Archiving changed files..." `tar -zcvf deploy-#{range_hyphenated}.tgz -C #{src} #{changed_files.join(' ')} delete-#{range_hyphenated}.sh` # Clean up puts "Cleaning up..." `rm changes.txt` `rm #{src}delete-#{range_hyphenated}.sh` `echo "Deployed #{range} at #{Time.now}" >> deploy.log` puts "Done!"