def diff(dir)
return unless File.directory?(dir)
logging_stream.puts "Processing '#{dir}'..."
repos = svn(:propget, Piston::ROOT, dir).chomp
uuid = svn(:propget, Piston::UUID, dir).chomp
remote_revision = svn(:propget, Piston::REMOTE_REV, dir).chomp.to_i
logging_stream.puts " Fetching remote repository's latest revision and UUID"
info = YAML::load(svn(:info, repos))
return skip(dir, "Repository UUID changed\n Expected #{uuid}\n Found #{info['Repository UUID']}\n Repository: #{repos}") unless uuid == info['Repository UUID']
logging_stream.puts " Checking out repository at revision #{remote_revision}"
svn :checkout, '--ignore-externals', '--quiet', '--revision', remote_revision, repos, dir.tmp
puts run_diff(dir.tmp, dir)
logging_stream.puts " Removing temporary files / folders"
FileUtils.rm_rf dir.tmp
end