lib/rbsync.rb in rbsync-0.0.7 vs lib/rbsync.rb in rbsync-0.0.8

- old
+ new

@@ -94,13 +94,15 @@ excludes = [] unless excludes Dir.chdir(dir_name){ files = Dir.glob "./**/*", File::FNM_DOTMATCH exclude_files =[] exclude_files = excludes.map{|g| Dir.glob "./**/#{g}",File::FNM_DOTMATCH } + #files.each{|e|pp [e, File.directory?(e)] } + files = files.reject{|e| File.directory?(e) } files = files - exclude_files.flatten } - files.reject{|e| [".",".."].any?{|s| s== File::basename(e) }} + files = files.reject{|e| [".",".."].any?{|s| s== File::basename(e) }} end # compare two directory by name and FileUtis,cmp def find_files(src,dest,options) src_files = self.find_as_relative( src, options[:excludes] ) dest_files = self.find_as_relative( dest, options[:excludes] ) @@ -297,11 +299,10 @@ } #コピーする self.copy_r(files) end def copy_r(files) - ##todo 進捗を調べる. if(@conf[:progress]) puts ("copy #{files.size} files") $stdout.flush end files.each_with_index{|e,i| @@ -310,10 +311,11 @@ puts ("start #{i+1}/#{files.size}") $stdout.flush end #main copy_thread = Thread.start{ + FileUtils.mkdir_p File.dirname(e[1]) unless File.exists?(File.dirname(e[1])) FileUtils.copy( e[0] , e[1] ,{:preserve=>self.preserve?,:verbose=>self.verbose? } ) } #progress of each file progress_thread = nil if(@conf[:progress]) @@ -465,5 +467,27 @@ out.print str out.flush end end + + +if __FILE__ == $0 +require 'tmpdir' +require 'find' +require 'pp' + Dir.mktmpdir('goo') do |dir| + Dir.chdir dir do + Dir.mkdir("old") + Dir.mkdir("new") + open("./old/test.txt", "w+"){|f| 10.times{f.puts("test")}} + time1 = Time.local(2008, 1, 1, 1, 1, 1) + File::utime( time1 , time1, "./old/test.txt") + rsync = RbSync.new + rsync.sync("old","new",{:update=>true}) + # timestamp is preserved? + p File.mtime("./new/test.txt") == time1 + p File.atime("./new/test.txt") == time1 + end + end + puts :END +end