# File lib/fastcst/changeset.rb, line 78
 78:         def initialize(source, target)
 79:             @source = source
 80:             @target = target
 81: 
 82:             src_files, src_dirs = scan(@source)
 83:             tgt_files, tgt_dirs = scan(@target)
 84: 
 85:             # use Set to figure out what has possibly changed
 86:             @deleted = src_files - tgt_files
 87:             @created = tgt_files - src_files
 88:             @common = src_files & tgt_files
 89:             @moved = {}  # initially empty until dected_moved_files is requested
 90:             @changed = {}
 91:             
 92:             # directories are handled after everything else
 93:             @deleted_dirs = src_dirs - tgt_dirs
 94:             @created_dirs = tgt_dirs - src_dirs
 95:             
 96:             @common.each do |file|
 97:                 otime = File.mtime(File.join(source,file))
 98:                 ntime = File.mtime(File.join(target,file))
 99:                 if otime != ntime
100:                     # file has changed, but we if the old file is 0 length then its actually a create
101:                     if File.size(File.join(source,file)) == 0
102:                         @created << file
103:                     else
104:                         @changed[file] = [otime, ntime]
105:                     end
106:                 end
107:             end
108:         end