Как настроить стратегию ветвления для нескольких последовательных историй (Git Flow)? - PullRequest
0 голосов
/ 20 января 2020

Мы переходим с TFS на Git (Azure DevOps), и мне неясно, какая стратегия лучше для следующего сценария:

У нас есть две истории в спринте.

  1. PBI-1: добавить функциональность XYZ
  2. PBI-2: расширить функциональность XYZ

Примечание:

  • Каждый PBI будет быть достаточно «большим», то есть включать несколько коммитов и может включать несколько разработчиков
  • PBI-2, очевидно, зависит от PBI-1 и не может запускаться, пока не будет завершен PBI-1

Также обратите внимание:

  • У нас есть политика в нашей ветви 'Develop', согласно которой весь код должен быть утвержден утверждающим, прежде чем он может быть объединен в
  • При объединении в 'Develop «мы выполняем« squa sh merge », а затем ветвь источника автоматически удаляется

Хорошо, так что из того, что я прочитал, мне кажется, что каждый PBI должен быть сам по себе «Feature Branch» (создается из ветви «Develop»). В таком случае, я предполагаю:

В начале Sprint мы создадим новую ветку функций из 'Develop' под названием "Feature / Add-XYZ".

Несколько разработчиков затем начали бы работу над этим, с обычным потоком ежедневного перебазирования ( примечание : см. Комментарий ниже относительно того, почему бы не использовать перебазирование) из «развернуть», регулярных коммитов и толчков к серверная версия ветки «Feature / Add-XYZ» (в DevOps).

Когда вся работа над PBI-1 завершена и весь код передан на сервер, запрос на извлечение будет создан и отправлен на Approver.

Однако утверждающий очень занят и может не получить запрос на извлечение в течение нескольких дней; мы не хотим, чтобы это было препятствием, поэтому как команде следует начинать со следующего PBI, помня:

  • PBI-2 зависит от кода, размещенного в ветке "Feature / Add- XYZ "
  • Ветка" Feature / Add-XYZ "будет удалена, как только процесс утверждения будет завершен

Я предполагаю, что:

  1. Создайте новую ветку от «master» под названием «Feature / Extend-XYZ» (он не будет содержать никакого кода, связанного с XYZ, поскольку он все еще находится в ветке «Feature / Add-XYZ»)
  2. Затем мне нужно будет «скопировать» соответствующий код из ветви «Feature / Add-XYZ» в «Feature / Extend-XYZ».

Если это правильный способ go, тогда каков рекомендуемый способ выполнения шага 2? Это простое «Слияние с»?

1 Ответ

0 голосов
/ 20 января 2020

Я предполагаю, что я:

  1. создам новую ветку от "master" под названием "Feature / Extend-XYZ" (в ней не будет кода, связанного с XYZ, поскольку он все еще находится в ветке «Feature / Add-XYZ»)
  2. Затем мне нужно «скопировать» соответствующий код из ветви «Feature / Add-XYZ» в «Feature / Extend-XYZ». ".

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

Чтобы обьяснить, почему ...

  • PBI-2 зависит от кода, находящегося в ветке «Feature / Add-XYZ»
  • Ветвь «Feature / Add-XYZ» будет удалена после завершения процесса утверждения

Удаление не имеет значения. Удаление ветки не влияет на ответвления, которые от нее разветвляются.

Последнее замечание:

с обычным ежедневным потоком повторного базирования

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

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