Очень простой способ справиться с этим - настроить приложение следующим образом:
Просто сделайте ваше приложение для развертывания рабочей копией вашего транка (svn co
проект в корневой каталог / www), и вы запускаете svn up
через консоль ssh (ssh user@host.com svn up /path/to/project
), когда вам нужно выполнить обновление. Вы также можете выполнить откат с соответствующими механизмами оформления заказа. Это важно: если вы сделаете это, добавьте RewriteRules (или эквивалентный) в ваш .htaccess (или эквивалентный), чтобы запретить доступ к каталогам .svn . Если вы не можете выполнить вышеизложенное, вместо этого запустите svn export
через ssh (так что это не будет «рабочая копия»), но это, естественно, будет медленнее, чем выполнение up
.
Кроме того, вы можете посмотреть, что Ruby on Rails делает с Capistrano ... это та же базовая концепция, но она поддерживает резервное копирование транзакций, если обновление идет не так в середине, сохраняя каждую проверку в отдельной папке и символическую ссылку "последние" Ваш каталог / www.