Вот наш типичный цикл разработки; мы "псевдо проворные"; и запустить в двухнедельном цикле выпуска.
Все проекты начинаются на ветке из ствола. Без исключений.
Как только проект завершен и очищен анализ кода, разработчику предоставляется зеленый свет для слияния этой ветви в ствол. Сюда; ни один код, который не был тщательно проверен, не попадает в магистраль. Мы используем CruiseControl для непрерывной интеграции, поэтому после фиксации в транке, если какие-либо тесты не пройдут, разработчик несет ответственность за их исправление. Эти исправления идут на багажнике.
За неделю до следующего выпуска; мы создаем выпускную метку (по сути, другую ветвь) и отправляем ее в QA. Если вы еще не объединили свой код со стволом, он не выйдет в следующем выпуске. (Важное примечание: этот выпуск «тег» никогда не объединяется обратно в транк.). Когда QA находит ошибки; они возвращены разработчику. Когда разработчик исправляет их; их изменения должны быть зафиксированы как в теге release, так и в транке.
Когда наступит день релиза; мы выпускаем все по этому тегу. В случае пост-релизных исправлений; мы следуем тем же рекомендациям, что и в цикле QA, если кто-то слился в новый проект со стволом после обрезки тега релиза; с аварийным исправлением он случайно не выйдет.
пена, промыть, повторить ...
Это может не отвечать на ваш вопрос как таковой; но, надеюсь, это послужит хорошей внешней точкой того, как вы можете настроить процесс разработки. Это был не наш первоначальный процесс, а скорее то, что мы придумали за последний год или два, и, по моему опыту, это на шаг впереди того, что мы делали раньше.
Если вы хотите получить какие-либо разъяснения по этому поводу; просто оставьте мне комментарий, и я буду обновлять по мере необходимости.