Ветвление задач и функций

Самая распространённая методика. На каждую задачу создаётся отдельная ветка, которая после завершения задачи интегрируется с магистралью. 

Ветка задачи

Схема:

  1. Разработчик создаёт ветку задачи из магистрали
  2. Для решения задачи вносит изменения в свою ветку.
  3. Регулярно забирает изменения из магистрали, чтобы как можно раньше обнаружить негативное влияние изменений на функциональность задачи
  4. Тестирует ветку
  5. Работоспособную ветку интегрирует с магистралью
  6. Тестирует магистраль
Если программист работает более чем над одной задачей одновременно, то открывает отдельную ветку для каждой из них.
Ветка релиза

Используется, если сложно поддерживать магистраль в рабочем состоянии.

Схема:

  1. Ветка релиза создаётся из магистрали или из предыдущего релиза
  2. Выполняется тестирование ветки релиза
  3. При необходимости 'горячие правки' выполняются непосредственно в ветке релиза или в ветках, созданных из него
  4. Выполняется интеграция с магистралью
  5. Далее ветка релиза живёт собственной жизнью. Дальнейшие изменения в релизе могут не передаваться в магистраль.

image-1710841571239.png

Ветка выпуска (продуктива)

Создаётся из ветки релиза. Но чаще используется метод маркировки ветки релиза. Сначала ветке релиза назначают идентификатор: номер.test (готова к тестированию). После готовности - номер.prod (готова к выпуску).

Экспериментальная ветка

Создаётся, когда нужно что-то попробовать, но нет уверенности, что в конечном итоге это будет использовано. 

Будущая ветка

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

Ветка совместной работы

Если требуется согласовать изменения, важные для нескольких членов команды.

Например, разработчик А создаёт процедуру, которую разработчик Б планирует использовать при решении своей задачи. Из магистрали создаётся ветка для совместной работы, а из неё ветки для каждого разработчика.

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