def checkout( revision, destination , branch=nil)
      
      raise "Checking out anything other than the head of the default branch not supported" if revision != :head
      raise "Not checking out, as #{destination} directory has another git repository" if !Dir["#{destination}/.git"].empty?
      
      cache_destination = location_in_cache()
      
      # Try and copy into the cache first
      clone_or_update_repo_in_cache(cache_destination)
      
      puts "Cache: #{cache_destination}"
      puts "Destination: #{destination}"
      output = checkout_from_cache_to_destination(cache_destination, destination, revision, branch)

      true
    end
def checkout( revision, destination , branch=nil)
      
      raise "Checking out anything other than the head of the default branch not supported" if revision != :head
      raise "Not checking out, as #{destination} directory has another git repository" if !Dir["#{destination}/.git"].empty?
      
      cache_destination = location_in_cache()
      
      # Try and copy into the cache first
      clone_or_update_repo_in_cache(cache_destination)
      
      puts "Cache: #{cache_destination}"
      puts "Destination: #{destination}"
      output = checkout_from_cache_to_destination(cache_destination, destination, revision, branch)

      true
    end
Checkout a particular revision from the repo into the destination
 Caches the checkout in the process