Следуя git-flow, как вы должны обрабатывать исправление более ранней версии?

Если вы попытаетесь следовать модели ветвления git-flow, задокументировано здесь и с инструменты здесь, как поступить в этой ситуации:

Вы сделали версию 1.0 и версию 2.0. Тогда вам нужно сделать хотфикс для 1.0. Вы создаете ветвь исправления из тега 1.0 и реализуете там исправление. Но что тогда?

Обычно вы должны объединиться с мастером и поместить туда тег выпуска 1.1. Но вы не можете объединить 1.1 с точкой после 2.0 на мастере.

Я думаю, вы могли бы поместить тег выпуска в ветку исправления, но это создало бы постоянную ветку рядом с мастером, которая содержала бы тег выпуска. Это правильный путь?


person Klas Mellbourn    schedule 05.05.2013    source источник
comment
возможный дубликат Git-flow и master с несколькими параллельными ветвями выпуска [хотя другой вопрос новее, на него есть более полезные ответы, поэтому я пометил этот вопрос как дубликат]   -  person danio    schedule 23.06.2014


Ответы (4)


Кажется, в git-потоке есть понятие «поддерживающей» ветки. Это используется для добавления исправления в более раннюю версию.

В этой ветке есть дополнительная информация со следующими примерами:

git checkout 6.0
git checkout -b support/6.x
git checkout -b hotfix/6.0.1

... сделайте свое исправление, затем:

git checkout support/6.x
git merge hotfix/6.0.1
git branch -d hotfix/6.0.1
git tag 6.0.1

или используя git flow команды

git flow support start 6.x 6.0
git flow hotfix start 6.0.1 support/6.x

... внесите изменения, затем:

git flow hotfix finish 6.0.1
person Klas Mellbourn    schedule 10.10.2015
comment
? сохранить эти ветки поддержки или удалить их через некоторое время - person Evan Hu; 01.03.2017
comment
@EvanHu, ну, конечно, держите их, пока у вас есть эта ветка в производстве. После этого речь идет об исторических записях. Возможно, вам захочется узнать, как были исправлены исправления, если они когда-нибудь повторятся. - person Klas Mellbourn; 01.03.2017
comment
Нужно сделать релиз на хот-фиксе, верно? Как мы можем сделать это? - person Ravindranath Akila; 14.06.2017

Интересный вопрос! Связанный вами поток предполагает, что мастер может отслеживать производство. Это работает только в том случае, если производственные версии строго увеличиваются. Обычно это верно для веб-сайта, имеющего только одну рабочую версию.

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

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

person Andomar    schedule 05.05.2013
comment
Вы можете изменить git-flow для установки тегов выпуска в ветках выпуска. Это довольно серьезное изменение. Это сломает текущие сценарии. Кроме того, что тогда будет содержать мастер? - person Klas Mellbourn; 05.05.2013
comment
Инструментарий git-flow не подходит, если вам необходимо поддерживать несколько производственных версий. В рабочем процессе, предложенном в этом ответе, master вообще не используется. Вы можете назвать мастера ветки разработки, в конце концов, это просто имя. - person Andomar; 05.05.2013
comment
GitFlow поддерживает отслеживание более чем одной рабочей версии: gitversion.readthedocs.io/en/latest/git-branching-strategies/ - person Andre L; 06.10.2016

git-flow предполагает, что вы поддерживаете только одну строку релиза за раз, что удобно отслеживается мастером. Если вы поддерживаете более 1, вам нужно будет изменить процесс git-flow, чтобы иметь несколько трекеров ваших отдельных выпусков, которые вы поддерживаете (master-1, master-2). Вы можете продолжать использовать master для отслеживания самой последней строки выпуска в дополнение к конкретному трекеру для самой последней строки выпуска или вместо него (master вместо master-2).

К сожалению, любой инструментарий git-flow, который вы можете использовать, вероятно, потребуется изменить, но, надеюсь, вы достаточно знакомы с процессом git-flow, чтобы обрабатывать этот конкретный случай непосредственно с помощью команд git.

person Bert F    schedule 05.05.2013
comment
Если вы измените git flow процесс, он будет другим. Если какая-то модель должна быть исправлена ​​(а не просто расширена), то она настолько успешна, насколько утверждает ее автор. Пожалуйста, ознакомьтесь с моим ответом на тему, которую мы обсуждаем. - person Victor Yarema; 02.08.2016

git config --add gitflow.multi-hotfix true Эта команда работает для меня!

person Laila    schedule 20.12.2018