Рекомендую Capistrano (http://habrahabr.ru/tag/capistrano/):
— мы используем вместе с модулем multistage, он позволяет разворачивать код на несколько stage-серверов (по команде «cap demo deploy» выкладывается ветка testing на демо-сервер, «cap production deploy» — ветка master на боевой)
— позволяет делать cached-copy: при первом развёртывании создаётся папка с клоном репозитория, при последующих — в ней делается git pull. Далее эта папка тупо копируется в целевую вместе с .git (у нас www-root находится не в корне проекта, а в одной из вложенных папок — так что паранойя нас сильно не мучает)
— deploy:rollback — откат к предыдущему деплою
— возможно задавать всякие разные задачи: before update, after update, restart, web:disable (блокировка сервера на период обновления)
— так же нашли и допилили модуль для создания тегов при каждом деплое — теперь прямо в дереве коммитов можно легко определить кто, что, куда и когда деплоил. Различия между версиями? Пожалуйста. Дату релиза? Пожалуйста. Конфетка получилась :)
— деплой на 10 серверов разом и выполнение всяких разных команд локально\удалённо — само собой разумеющееся