Рабочий процесс Git и Геррит

Я пытаюсь реализовать рабочий процесс типа «git-flow» с использованием Gerrit, но, похоже, не могу разгадать последний кусок головоломки.

У моей проблемы есть два предварительных условия:

  • Геррит выполнит слияние только с одной веткой
  • Я не разрешаю передавать коммиты слияния на Геррит. Слияние должно быть выполнено Герритом после утверждения изменений

. Я хочу решить следующее. Рассмотрим эту ситуацию с git:

Master 0 
        \
         \
Develop   0-----0-----0-----0

Существует основная ветвь с одним коммитом и ветвь разработки, которая разветвляется от мастера с несколькими дополнительными коммитами. Через некоторое время ветвь разработки снова объединяется с основной для создания следующего производственного выпуска.Разработчики работают с тематическими ветками от develop и со строгим ребазингом. Их коммиты всегда перед запуском обновляются на основе последних разработок. Это должно привести к линейной истории и только быстрой перемотке вперед.

Теперь предположим, что кто-то создает ветку исправлений из мастера и выполняет слияние обратно в мастер:

Master 0--------0 HF 
        \
         \
Develop   0-----0-----0-----0

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

Мой вопрос: как мне включить новые коммиты из основной ветки в локальную ветку разработки, чтобы любые новые изменения, внесенные разработчиками, содержали исправление? В идеале я бы изменил свой сценарий, чтобы сначала применить исправления ошибок к локальной ветке разработки (слияние, но без фиксации слияния), а затем переустановить коммиты разработчика и нажать. Таким образом, исправление будет автоматически добавлено к их новым изменениям и будет рассматриваться как часть их новых коммитов, а не отдельная фиксация.

Я думал о возможных решениях:

  • Cherry выбирает фиксацию в ветке разработки. Я считаю, что это всегда будет приводить к дублированию фиксации, когда в следующий раз разработка будет объединена с мастером. Есть ли способ обойти это?
  • Перебазирование, как описано здесь: http://davitenio.wordpress.com/2008/09/27/git-merge-after-git-cherry-pick-avoiding-duplicate- совершает / .Это, вероятно, вызывает проблемы, так как ветка разработки опубликована, или нет?

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

14
задан Lii 15 May 2017 в 07:38
поделиться