Я использую Subversion для этого, и он работает хорошо.
Обычно я разворачиваюсь, пока у меня не будет чего-то очищенного для релиза.
На этом этапе я создамветка с именем что-то вроде релиза.Я запрыгну на производственную систему и проверю мою недавно созданную ветку.Для нескольких проектов у меня будет промежуточная зона, которая работает в производственной системе.
Например, у меня может быть дерево каталогов, которое выглядит следующим образом:
/web/sites/release-1
/web/sites/release-2
/web/sites/release-3
/web/sites/release-4
/web/sites/stage ==> release-4
/web/sites/live ==> release-3
"stage" и "live" - это символические ссылки, и это то, что Apache имеет для DocumentRoot для virtualhosts www.example.com и stage.example.com)
Эта настройка позволяет мне довольно тщательно тестировать вещи в реальной производственной среде, а затем обрезать их путем замены символических ссылок.
Разветвлением перед развертываниемЯ могу сделать аварийные исправления на производстве в том редком случае, когда мне нужно это сделать.Затем я могу объединить эти изменения со стволом, когда это будет удобно и уместно.
Последний совет: если вы используете рабочие копии проектов subversion в производственной среде, вам нужно не допустить, чтобы apache позволял людям просматриватьКаталоги .svn в вашем проекте:
в httpd.conf:
<Directory ~ "\.svn">
Order allow,deny
Deny from all
</Directory>