Я нахожусь в счастливом положении, где моя ГОЛОВКА почти всегда высвобождается. По крайней мере, один раз в неделю, у меня есть код в HEAD, который я, как разработчик, с удовольствием выпустил бы. Это не значит, что каждая выпускаемая версия действительно получает релиз, но это возможно. В моей среде еженедельный выпуск на самом деле довольно практичен и обычно делается ...
Непосредственно перед развертыванием на стадии подготовки я продвигаю свой код в ветке Release. Я всегда внедряю в работу один и тот же код, который ранее был проверен при постановке.
Любые срочные исправления могут быть внесены в ветку релиза и протестированы в Staging перед развертыванием. Если исправление достаточно хорошее, я могу слить его обратно в HEAD. Если это был ужасный хак, я смогу потом правильно его реализовать в HEAD.
У меня есть хороший набор тестов для разработчиков, которые запускаются автоматически при каждой регистрации, которые подтверждают, что я не нарушил ничего важного. Мое приложение также запускает внутренние тесты каждый раз, когда оно развертывается, и это снова делает меня уверенным.
На самом деле, удача - это менее важный фактор, чем вы думаете. Это случилось не случайно; Я должен был работать, чтобы сделать это возможным. Мне пришлось посвятить себя написанию и поддержке хороших автоматизированных тестов, а также получению сервера непрерывной интеграции и возможности сборки и развертывания одним щелчком.
Я регулярно трачу время на очистку своего кода, как часть моей обычной деятельности по разработке. Это имеет два преимущества. Во-первых, это означает, что моя кодовая база изначально относительно чистая, поэтому архитектура довольно гибкая. Во-вторых, это означает, что я хорош в рефакторинге, так как я делаю это все время. Под этим я подразумеваю рефакторинг в смысле создания серии отдельных небольших преобразований в существующем коде, а не в смысле «брось все это прочь и заново внедрись» (что несколько опаснее).
По моему мнению, эта "непрерывная выполнимость" является единственным большим преимуществом гибких методологий.