Руководство по ветвлению Git - PullRequest
0 голосов
/ 15 мая 2018

В моей рабочей среде сначала у нас был запланирован релиз на октябрь, поэтому мы создали следующую структуру

Мастер -> Разработка -> функция

Изменения в ветке функций в октябрьском выпуске.

Теперь мы получаем еще один проект для августовского релиза. Итак, у меня есть следующие варианты

Вариант 1: 1) Не объединяйте изменение ветки функций, созданной для октябрьского выпуска, в ветку разработки 2) Разветвите еще одну функциональную ветку от Develop для августовского релиза. 3) По завершении августовского выпуска объедините изменения в ветку разработки и функциональную ветку октября

.

Вариант 2: Поскольку мы планируем объединить изменения из функциональной ветви (октябрь) в частную ветвь разработки для развертывания SIT 1) Разветвите еще одну ветку Develop от Master на август 2) А затем создайте ветку для августовского релиза из этой ветки Develop. 3) Регулярно объединяйте изменения в ветку Develop. После релиза объедините изменения с Master, Develop of October (октябрь) и ветками Feature *

.

Вариант 3: Создание ветки релиза

Master -> Develop -> Release -> Feature

1) Создайте ветку Release, специфичную для релизов, и управляйте слиянием

Пожалуйста, дайте мне знать, какой подход является правильным и будет иметь минимальное требование к объединению.

~ Спасибо

1 Ответ

0 голосов
/ 15 мая 2018

Пожалуйста, дайте мне знать, какой подход правильный ...

Нет правильного подхода, но некоторые лучше, чем другие.

... и будет иметь минимальное требование к объединению.

Как ни парадоксально, вы хотите, чтобы ветвление и слияние больше часто, но с меньшими изменениями.

Долгоживущие ветви, которые накапливают множество изменений, накапливают сложность, затрудняя их контроль, управление и объединение. Месяцы между выпусками также накапливают множество функций, которые должны быть добавлены пользователям одновременно. Все это делает процесс слияния, интеграции и выпуска медленным и сложным.

Тогда у вас сейчас такая проблема: у вас есть неполная, большая октябрьская ветка выпуска. График выпуска был включен в процесс разработки. Теперь вас просят выпустить августовский выпуск, что вы делаете со всем этим кодом в октябрьской ветке? Это негибко.


Вместо этого имейте одну долгоживущую ветвь, на которой все разработано. Разрабатывайте функции индивидуально в изолированных, недолговечных ветвях функций. QA их до слияния. Это дает вам одну долгоживущую ветвь, которая всегда готова к выпуску.

Это может выглядеть примерно так.

                      I - J   L - M - N [feature1]
                     /     \ /
A - B - C ----- F - G ----- K [master]
         \     /             \
          D - E               O - P [feature2]

Здесь показаны две завершенные функции, D - E и I - J, которые уже прошли QA и были объединены в master. Поскольку QA уже был выполнен в ветвях компонентов, master развернут в производство. Есть две открытые ветки. Разработчики этих веток периодически запускают git rebase master, поэтому они в курсе последних полностью проверенных кодов master. Это упрощает процесс слияния, всегда сохраняя их ветвь на кончике master и обрабатывая конфликты постепенно, а не большим фрагментом в конце.

Обратите внимание, что нет прямых коммитов для мастера, они изменяются только через слияние ветвей функций. Это означает, что мастер всегда проверен, надежен и готов к развертыванию. Отдельные выполняемые функции не мешают друг другу и могут полагаться на стабильную главную ветвь; если что-то ломается, они знают, что это из-за их работы, а не потому, что кто-то сломал ветку dev.

Теперь вы можете отпустить, когда захотите, master всегда готов к работе. График выпуска и процесс разработки не зависят друг от друга. Вы можете развертывать с master по заданному расписанию или сразу после объединения.

Вы работаете над функциями октябрьского выпуска в виде отдельных веток и QA и объединяете их. Если происходит внезапное изменение приоритета, например, набор функций для августовского выпуска, вы переключаетесь на эти функции, как и раньше. Когда наступает крайний срок в августе, master готов к работе и развертывается.

Если в августе есть функции, которые вы не хотите развертывать, оставьте код в августе, но отключите его с помощью переключателя конфигурации.

Это позволяет избежать необходимости управлять несколькими долгоживущими ветвями с параллельными изменениями и слиянием между ними. Вместо этого у вас есть несколько кратковременных ветвей для каждой функции. Если вы хотите отслеживать, что было развернуто, используйте теги, а не ветви.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...