def checkout( revision, destination, branch=nil )
     
      puts "Checking out branch in not supported for SVN" if branch
      
      if revision != :head
        raise "Checking out revisions other than head currently not supported"
      end
      
      cache_destination = location_in_cache(revision)
      
      # Try and copy into the cache first
      begin
        perform_cache_checkout_or_update(cache_destination)
        FileUtils.mkdir_p(destination)
        
        FileUtils.cp_r(cache_destination+'/.', destination)
        # Ensure the final copy is consistent
        raise CopyError if !Dir.exist?(destination)
        output = perform_update(destination)
        if !output[:status]
          raise UpdateError.new(output)
        end
        
      rescue => e
        puts "Unhandled randomness: " + e.to_s + ' - ' + e.backtrace.to_s
        # If we can't copy into the cache, copy directly to the destination
        perform_checkout(destination)
      end
      
      true
    end
def checkout( revision, destination, branch=nil )
     
      puts "Checking out branch in not supported for SVN" if branch
      
      if revision != :head
        raise "Checking out revisions other than head currently not supported"
      end
      
      cache_destination = location_in_cache(revision)
      
      # Try and copy into the cache first
      begin
        perform_cache_checkout_or_update(cache_destination)
        FileUtils.mkdir_p(destination)
        
        FileUtils.cp_r(cache_destination+'/.', destination)
        # Ensure the final copy is consistent
        raise CopyError if !Dir.exist?(destination)
        output = perform_update(destination)
        if !output[:status]
          raise UpdateError.new(output)
        end
        
      rescue => e
        puts "Unhandled randomness: " + e.to_s + ' - ' + e.backtrace.to_s
        # If we can't copy into the cache, copy directly to the destination
        perform_checkout(destination)
      end
      
      true
    end
Checkout a particular revision from the repo into the destination
 Caches the checkout in the process