Рабочий процесс Git и Gerrit
Я пытаюсь реализовать рабочий процесс типа «git-flow» с использованием Gerrit, но, похоже, не могу понять последнюю часть головоломки.
Есть две предпосылки моей проблемы:
Геррит выполнит слияние только с одной веткойЯ не позволяю коммитам слияния передаваться Герриту. Объединение должно быть выполнено Герритом после утверждения изменений.Я хочу решить следующее. Рассмотрим ситуацию с git:
Master 0
\
\
Develop 0-----0-----0-----0
Существует ветка master с одним коммитом и ветвь разработки, которая разветвляется от master с несколькими дополнительными коммитами. Через некоторое время ветвь разработки снова объединяется с master для создания следующего производственного выпуска. Разработчики работают с ветками тем от разработки и со строгим перебазированием. Их коммиты всегда перебазируются поверх последних разработок перед тем, как их выдвигать. Это должно привести к линейной истории и только к ускоренной фиксации.
Теперь предположим, что кто-то создает ветку исправлений из master и сливается обратно с master:
Master 0--------0 HF
\
\
Develop 0-----0-----0-----0
Этот коммит теперь объединен только с основной веткой, но разработчикам нужен этот коммит в их ветке разработки, чтобы включить исправление в свои изменения. Обычно вы объединяете главную ветвь для разработки ветки разработки, но, учитывая мои предварительные условия, это невозможно, так как это создаст локальный коммит слияния.
Мой вопрос: как мне включить новые коммиты из ветки master в локальную ветвь разработки, чтобы любые новые изменения от разработчиков содержали исправление ошибки? В идеале я бы изменил свой сценарий, чтобы сначала применить изменения исправлений к локальной ветви разработки (слияние, но без фиксации слияния), а затем перебазировать коммиты dev и нажать. Таким образом, исправление будет автоматически добавлено к их новым изменениям и будет рассматриваться как таковое, как часть их новых коммитов, а не отдельного коммита.
Я думал о возможных решениях:
Черри выбирает коммит для развивающейся ветки. Я полагаю, что это всегда приведет к дублированию коммита, когда в следующий раз развернутся с master. Есть ли способ обойти это?Перебазирование, как описано здесь:http://davitenio.wordpress.com/2008/09/27/git-merge-after-git-cherry-pick-avoiding-duplicate-commits/ , Это, вероятно, вызывает проблемы, так как ветка разработки опубликована, или нет?Я надеюсь, что мой вопрос ясен. Пожалуйста, дайте мне знать, если это требует дальнейших разъяснений. Я знаю, что я довольно жестко отношусь к своему рабочему процессу, но это было бы идеально в сочетании с Герритом. Если это не может быть сделано, то я, вероятно, разрешу коммиты слияния ...