После 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 Эта команда, кажется, работает для меня!

Другие вопросы по тегам