При переходе от чего-то к чему-то еще нужно определить только две вещи:
- Какова ваша цель
- Как добраться (план миграции)
Первая часть, к сожалению, часто забывает или путь слишком расплывчатыми. Вы не можете просто сказать, что у вас есть беспорядок, и вы хотите организовать это. Что бы это значило? У каждого была бы другая интерпретация (иначе: каждый разработчик думает, что его или ее способ делать вещи является лучшим).
Скорее всего, все филиалы, которые у вас есть, служат или послужили цели. Без четко определенного целевого процесса люди будут продолжать делать то, что им выгодно, так, как им удобно (и это правильно).
Например, ваша цель должна быть определена так же ясно, как Винсент Дриссен определил свою «успешную модель ветвления Git» . Если вы посмотрите на эту модель, она будет очень точной: она говорит, где должен быть стабильный код и где должны разрабатываться нестабильные функции. В нем также говорится, как и когда разветвляться, обновляться и сливаться обратно. Вы знаете, для чего каждая ветка, и что с ними делать. Мы используем вариант того, что было предложено Винсентом, и наш вариант определен в нашей вики.
Важным моментом является то, чтобы вся команда понимала и согласовывала цель. Возможно, стоит напомнить людям, что вы ищете не их любимую модель ветвления, а модель, с которой все члены команды могут легко согласиться и использовать.
Как только у вас есть цель, вы сможете разработать свой план миграции. Этот план может быть настолько длинным или коротким, насколько вы захотите. Я видел такую модель ветвления, наложенную за ночь; в других местах это было сделано за 2 или 3 спринта. Это не имеет большого значения для меня, пока мы улучшаемся.
Вы можете начать с «самых больших» или более важных веток. Например: «отныне master должен всегда находиться в состоянии, которое будет развернуто в prod, а ветка dev должна всегда компилироваться» (или какими-либо другими правилами). Затем принудительно установите ветки версий (выпусков). После этого принудительно используйте функциональные ветви. После этого наложите код на ветку версии, если это имеет смысл.
DevOps - это общение, открытость и эффективность. Эти понятия необходимо помнить и распространять на протяжении всего процесса.
Я бы предложил пригласить некоторых людей за пределами группы разработчиков на совещание процесса в качестве наблюдателей. Шефу или руководству среднего звена может быть что-то сказать о вашей модели. Потребностям разработчиков следует уделять первоочередное внимание, но если модель ветвления невозможно привести в соответствие с тем, как все устроено, вам лучше знать об этом сейчас, а не через месяц или два.
Если у вас действительно большие команды, постарайтесь включить всех. С очень большими командами у вас все равно будет две или три встречи. Так что пригласите руководителей групп в комнату, но имейте доступную веб-трансляцию и сообщите всем об этом. Если у кого-либо есть предложение или проблема, они смогут высказать его своему руководителю группы, и если оно действительно, оно будет рассмотрено на втором или третьем собрании.