def checkout(revision, destination)
git = command
remote = origin
args = []
args << "-o #{remote}" unless remote == 'origin'
if depth = variable(:git_shallow_clone)
args << "--depth #{depth}"
end
execute = []
execute << "#{git} clone #{verbose} #{args.join(' ')} #{variable(:repository)} #{destination}"
execute << "cd #{destination} && #{git} checkout #{verbose} -b deploy #{revision}"
if variable(:git_enable_submodules)
execute << "#{git} submodule #{verbose} init"
execute << "#{git} submodule #{verbose} sync"
if false == variable(:git_submodules_recursive)
execute << "#{git} submodule #{verbose} update --init"
else
execute << %Q(export GIT_RECURSIVE=$([ ! "`#{git} --version`" \\< "git version 1.6.5" ] && echo --recursive))
execute << "#{git} submodule #{verbose} update --init $GIT_RECURSIVE"
end
end
execute.compact.join(" && ").gsub(/\s+/, ' ')
end