Вот как я это делал уже несколько лет.
Dev Server - Расположен в доме, содержит стек LAMP, репозиторий и рабочую копию. Он имеет те же версии программного обеспечения, что и рабочий сервер.
Производственный сервер - имеет промежуточную среду с рабочей копией репозитория, а также имеет производственную среду с версией проекта, отличной от svn (т. Е. Живой сайт).
Разработчик - имеет стек LAMP и рабочую копию хранилища на своей локальной машине.
Типичный процесс:
Разработчик обновляет рабочую копию проекта. Работает на локальной копии, когда текущие изменения сделаны и без ошибок, они проверяют копирование обратно в хранилище.
Хук после фиксации обновляет рабочую копию Dev Server. Возможно, вы захотите сделать это вручную, особенно если ваша команда начинает расти.
Если изменения работают на Dev Server, то рабочая копия в промежуточной среде обновляется вручную.
Если изменения работают в промежуточной среде, то мы используем RSYNC для передачи любых изменений из рабочей копии промежуточной среды в производственную среду.
Очевидно, что это очень общее объяснение того, что происходит, поскольку вы хотите интегрировать в процесс такие вещи, как модульное тестирование, но я надеюсь, что это поможет.