Вот несколько мнений -
.svn файлы на производстве грязные?
Если каталоги .svn целы и не повреждены, они далеко не грязные, они на самом деле спасатели. В целях безопасности вы можете указать apache, чтобы они не просматривались.
Оформление заказа или экспорт? мой подход ...
Я определенно использую теги и ветки - опасно подключать производственный сервер к транку и молиться, чтобы никто не запускал svn сразу после того, как кто-то зафиксировал неисправный код в транке, чтобы посмотреть, что он делает на DEV.
У меня есть тег многократного использования (скажем, _production и _staging), и в начале настройки я извлекаю каждый из них на соответствующий сервер. Затем я блокирую доступ, чтобы изменить содержимое живого и промежуточного сервера. После этого сервер DEV связывается с головкой соединительной линии. Когда код достаточно стабилен для QA / staging, мы создаем тег и переименовываем его в _staging, чтобы позволить промежуточному серверу синхронизироваться с ним (скрипт запускает 'svn up') всякий раз, когда он видит изменения в этом теге. Как только мы довольны _staging, мы переименовываем его в _production, и это заставляет код развертываться на работающем сервере.
Кроме того, вы можете создавать теги / ветви с разными именами и использовать 'svn switch URL', чтобы указать серверу новый тег / ветвь (фиксированная точка). Все вышеперечисленное упрощает развертывание без простоя, и если откат необходим, вы можете быстро переименовать заархивированный прежний тег или использовать svn switch OLD_URL, чтобы немедленно отменить новые изменения, не беспокоясь о каждом маленьком файле и изменениях строк. 1005 *
Разрешения и право собственности
Если вы понимаете и знаете, какими должны быть разрешения для файлов, вы можете запускать скрипт после каждого развертывания, чтобы установить для CHOWN и CHMOD то, что вы хотите.
Страх против Знания
Я слышал о многих напуганных людях, которые исключают присутствие SVN на рабочем сервере. Противоположность на самом деле очень страшная. Как вы заверяете свою команду разработчиков и клиентов, что приложение не будет свернуто в большую кучу или сообщения об ошибках без возможности пробного запуска или 'svn status -u', чтобы гарантировать, что при развертывании будут изменены только те файлы, которые должны менять? проверка статуса позволяет мне даже узнать, заставил ли кто-нибудь сделать это и сделал «быстрое изменение» непосредственно на сервере - вы знаете, что люди склонны обходить правила для вещей, которые им быстро кажутся.
Воображение есть ошибка на живом сервере? с помощью .svn вы можете определить точную версию, с которой она синхронизируется (svn info), а затем проверить, соответствует ли она этому URL (sv status -u). Затем вы можете создать точную копию этой настройки, извлекая тот же тег / версию на сервер песочницы, где вы можете безопасно устранять неполадки.