[Несмотря на то, что мы много тестируем перед выпуском,] То, что мы делаем, это:
Наш SVN выглядит так:
/repo/trunk/
/repo/tags/1.1
/repo/tags/1.2
/repo/tags/1.3
Теперь, когда мы выпускаем, мы создаем тег, который мы в конечном итоге проверяем на производстве. Прежде чем приступить к производству, мы делаем постановку, которая [меньше серверов, но] почти такая же, как и производство.
Причины создания «тега» заключаются в том, что некоторые настройки нашего приложения в производственном коде немного отличаются (например, ошибки не отправляются по электронной почте, но регистрируются) от «транка» в любом случае, поэтому имеет смысл создать тег и совершить эти изменения. А затем оформить заказ на производственный кластер.
Теперь, когда нам нужно исправить проблему, мы сначала исправляем ее в тегах / x, а затем svn update
из тега, и это хорошо. Иногда мы проходим стадирование, с некоторыми проблемами (например, мелкими / тривиальными исправлениями, такими как орфография), мы минуем постановку.
Единственное, что нужно помнить, это применить все патчи от tags/x
до trunk
.
Если у вас более одного сервера, Capistrano чрезвычайно полезен для выполнения всех этих операций.