task :svn do # msg = String.new(""); msg = ENV["COMMIT_MSG"].to_s msg = "Raked in svn commit - look in diff for description" if msg.empty? to_add = [] to_remove = [] to_checkin = [] `svn status`.each_line do |l| action_char, path = l.split(' ', 2) next if not path path.strip! case action_char when '?' to_add << path when '!' to_remove << path when 'M' to_checkin << path end end puts "\nyou are about to..." def print_list(array, str) puts "\n#{str}:" array.each { |i| puts "\t"+i } puts "\t" if array.length == 0 end print_list(to_add, 'add') print_list(to_remove, 'remove') print_list(to_checkin, 'checkin') puts "\ncontacting repository...\n" `svn add #{to_add.join(' ')}` if not to_add.empty? `svn remove #{to_remove.join(' ')}`if not to_remove.empty? `svn commit -m '#{msg}'` puts "running 'svn update' to be sure we are up-to-date..." puts `svn update` puts "\nfinished.\n" end