git flow с двумя основными ветками, возможно ли это? - PullRequest
0 голосов
/ 10 июня 2019

Я работаю в проекте со странной схемой ветвления.Допустим, это общий репозиторий проектов, который содержит несколько веб-сайтов (только пример ниже):

с сайтов выше web1, web2, web3 имеет те же функции, web4 имеет те же функции, что и другие, плюс несколько изменений.Предыдущая команда закончила создание главной ветви для web1, web2, web3 и web4_master для web4.Вот пример того, как выглядит ветвление:

λ git branch
* web4_master
  master
  develop

Я хотел бы использовать git-flow здесь, как я делаю для остальных проектов с обычной схемой ветвления (имеется в виду только один мастер), нов этом случае мне приходится использовать основные ветки master, а иногда код переходит к master, web4_master или обоим.Есть ли способ справиться с этим с помощью git-flow?Или я должен быть привязан к старому способу, означающему объединение изменений, куда бы они ни направлялись вручную?

1 Ответ

0 голосов
/ 10 июня 2019

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

  • Одна master ветвь как обычно
  • Одна develop веткас master как обычно
  • web4_master - это ветвь с master
  • web4_develop - это ветвь с web4_master

Если функциядля всех сайтов, то работа ведется в функциональной ветке от develop как "нормальная" git-flow.В конце концов, это будет готово к выпуску и объединено в master.

Если функция предназначена только для web4, то работа выполняется в ветви функций из web4_develop и в конечном итоге объединяется в web4_master.

По сути, происходит два git-flow - один для всех сайтов и один для web4 определенных вещей.

Последний фрагмент:

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

  1. Повторите web4_master на master.Скорее всего, здесь будут конфликты, поэтому разрешайте их по мере необходимости
  2. Перебазируйте web4_develop на флаг web4_master. This will NOT be a standard rebase and will need to make use of the - на`, чтобы избежать дублирования коммитов.См. this для подробного объяснения
  3. Повторите шаг 2 для любых web4 ветвей выполняемых функций для web4_develop.

По сути, этообрабатывая дерево web4 как ветку длинных объектов с master.


Я не рекомендовал бы это, если есть существенные изменения от функций "всех сайтов", или если изменения очень распространены, так как разрешение конфликта станет раздражающим.

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


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

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