Я думаю, это зависит от того, что вы подразумеваете под развертыванием. Обычно процесс развертывания для веб-проектов включает в себя этап сценариев настройки, на котором вы можете взять один и тот же пакет развертывания и направить его на конкретные серверы (подготовка, разработка, производство), изменив простые директивы конфигурации.
По моему опыту работы с серверами Linux, эти системы часто создаются на заказ, и по моему опыту часто используют rsync, а не svn export и / или scp отдельно.
Сценарий может быть выполнен из командной строки следующим образом:
$ deploy-site --package=app \
--platform=dev \
--title="Revsion 1.2"
Внутренне, система будет брать все, что было в транке для данного пакета из SVN (я уверен, что вы могли бы действительно легко адаптировать это для git), генерировать новый уникальный тег с записью в журнале "развертывание Revision 1.2".
Затем он исправит любые конфигурационные сценарии с соответствующими изменениями (URL-адреса, хосты, пароли базы данных и т. Д.), Прежде чем выполнить повторную синхронизацию с соответствующим назначением.
Если есть проблемы с развертыванием, это так же просто, как повторить ту же команду только на этот раз, используя один из автоматически сгенерированных тегов из более раннего развертывания:
$ deploy-site --package=app \
--platform=dev \
--title="Reverting to Revision 1.1" \
--tag=20090714200154
Если вам также нужно выполнить компиляцию на другом конце, вы можете включить в свою конфигурацию исправление Makefile, а затем выполнить команду через ssh, которая скомпилирует недавно развернутый код после завершения процесса rsync.