После Git-потока, как вы должны обрабатывать исправление более ранней версии?
Если вы попытаетесь следовать модели ветвления git-flow, задокументированной здесь и с помощью инструментов здесь, как вы должны справиться с этой ситуацией:
Вы сделали версию 1.0 и версию 2.0. Затем вам нужно сделать исправление для 1.0. Вы создаете ветку исправлений из тега 1.0 и внедряете там исправление. Но что тогда?
Обычно вы бы слились с мастером и поместили туда тег выпуска 1.1. Но вы не можете слить 1.1 в точку после 2.0 на мастере.
Я думаю, вы могли бы поместить тег release в ветку исправлений, но это создаст постоянную ветку рядом с master, которая будет содержать тег release. Это правильный путь?
3 ответа
Похоже, что в 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
Интересный вопрос! Связанный поток предполагает, что мастер может отслеживать производство. Это работает, только если производственные версии строго увеличиваются. Это обычно верно для веб-сайта, который имеет только одну производственную версию.
Если вам нужно поддерживать несколько производственных версий, одной ветки для отслеживания производства недостаточно. Решение не в том, чтобы использовать мастер для отслеживания производства. Вместо этого используйте такие ветки, как release1
, release2
, так далее.
При таком подходе вам может даже не понадобиться ветвь исправлений. Вы можете решить проблему на release1
ветка. Когда исправление достаточно хорошее, создайте release1.1
тег на release1
ветка.
git-flow предполагает, что вы поддерживаете только одну линию выпуска за раз, удобно отслеживаемую мастером. Если вы поддерживаете больше 1, вам нужно будет изменить процесс git-flow, чтобы иметь несколько трекеров ваших отдельных выпусков, которые вы поддерживаете (master-1, master-2). Вы можете продолжать использовать мастер для отслеживания самой последней строки релиза, в дополнение или вместо определенного трекера для самой последней строки релиза (мастер вместо master-2).
К сожалению, любой инструмент git-flow, который вы можете использовать, возможно, потребуется изменить, но, надеюсь, вы достаточно знакомы с процессом git-flow, чтобы обрабатывать этот конкретный случай непосредственно с помощью команд git.
git config --add gitflow.multi-hotfix true Эта команда, кажется, работает для меня!