Есть Capistrano, который помогает вам в этом процессе. Использование SSH и ключей делает процесс развертывания изменений и т. Д. Довольно простым. Хотя это приложение ruby, вы все равно можете использовать его для развертывания PHP или других приложений, посмотрите здесь для получения дополнительной информации
И эта статья говорит об этом, используя общую папку вместе с вашей папкой выпуска. В общей папке могут храниться файлы конфигурации для вашего отдельного сервера развертывания (URL-адрес, соединение с БД и т. Д.), А также ресурсы, которые загружаются в течение жизни веб-сайта и отсутствуют в svn. Вы можете сделать так, чтобы Capistrano справился и с вами.
Хотя кто-то, кто не знает настройки, может сначала столкнуться с некоторыми сложностями, это действительно облегчает развертывание. Я думаю, что Capistrano делает довольно просто и, вероятно, может быть написан на другом языке, чтобы справиться с вашим конкретным сценарием.
И еще одна идея связать это с SVN или любым хранилищем. Это использовать их хуки для выполнения этих развертываний. т.е. каждый коммит на транк будет обновлять сервер разработки. И ветвь подтолкнет его к вашей промежуточной среде.
Но эта ссылка отлично показывает, как настроить окружение такого типа. Я думаю, что вы создали хорошую практику и не сделали достаточно. Единственное, что может вам помочь, - это автоматическое развертывание в различных средах и сценариях, помогающее настроить новое развертывание.
Обновление ::
Кроме того, я хотел бы отметить, что SVN может обрабатывать символические ссылки. Поэтому, если вы выполняете развертывание на серверах на основе Unix, вы можете просто вставить символические ссылки в свой репозиторий и использовать относительную символическую ссылку.
Так что, если у вас есть
./releases/200912231043
./shared/uploads
Вы можете поставить символическую ссылку как
./releases/200912231043/uploads -> ../../shared/uploads
Это даст вам простой способ управления активами, не входящими в svn, без использования большого количества сценариев, которые можно развернуть. Теперь вы можете просто использовать коммит для развертывания на вашем устройстве разработки и / или организации.