Частично идея была позаимствована от GitFlow и TensorFlow (стандарт работы с git в компании Tensor)
master
rc-{номер версии}
(можно так же обозначать, какrc-*
)
По-умолчанию Git создает 1 основную ветку - master
. Она будет являться веткой с последним релизным состоянием.
Ветки с названием rc-{номер версии}
создаются накануне релиза или незадолго до него, планово. Называться может, например, rc-1.0.2
.
Все релизные ветки rc-*
в конечном итоге при релизе конкретной версии сливаются в master
.
Ветки master
должны быть заблокированы от прямого пуша в них, по крайней мере разрешить можно это делать нескольким избранным людям для каких-то срочных исправлений косяков.
Для выполнения какого-либо задания обычно следует ответвиться от ветки rc-*
в новую ветку, название которой должно соответствовать следующему формату:
тип-ветки/тип-изменения/в-двух-словах-что-тут-делалось/и-еще-какая-нибудь-информация/ещё-что-нибудь
Где тип-ветки
:
m
если ответвляемся отmaster
{номер версии}
, если ответвляемся отrc-*
. Например, может быть1.0.2
Где тип-изменения
может быть:
bugfix
- при исправлениях каких-либо ошибокhotfix
- срочное исправление, обычно попадает в rc-*feature
- при создании нового функционала
1.0.3/feature/improved-sidebar
m/hotfix/maa/fix-wrong-template-name
Тут maa
- это инициалы человека, создавшего ветку и ведущего в ней разработку. Формат простой: ФИО
.
- Сразу после создания репозитория необходимо создать от
master
веткуrc-*
с какой-то начальной версией, например,1.0.0
. - Если принята дата, к которой надо выпустить какие-то исправления или новый функционал, то необходимо:
- Создать соответствующий
milestone
на github с необходимой версией по форматуrc-*
(например,rc-1.0.1
) - Создать ветку
rc-*
с соответствующей версией от предыдущейrc-*
(например, текущаяrc-1.0.0
, тогда новая будетrc-1.0.1
). (Фиксация версии)
- Создать соответствующий
- Вести разработку в соответвующих ветках.
- Если есть
rc-*
ветка, в которую вносятся изменения, то мёржить свои ветки надо не только вrc-*
, но и в вышестоящие релизы, если они зафиксированы. Например:- Есть 2 релиза:
rc-1.0.1
,rc-1.0.2
. Задачу надо закрыть вrc-1.0.1
. В этом случае создается ветка отrc-1.0.1
, например,1.0.1/bugfix/maa/my-fix
. После завершения разработки по данной задаче создаютсяPull Request
(Merge Request
) в веткиrc-1.0.1
,rc-1.0.2
. - Если есть 3 релиза, то мёржи делаются во все эти версии. Ну и так далее.
- Есть 2 релиза:
- Если задача стоит в релиз, который еще не зафиксирован, то следует согласовать перенос задачи/ошибки в версию, которая уже зафиксирована или попросить создать ветку для этой версии
- Ветки
rc-*
при релизе мёржатся вmaster
.
- Если есть
Разделители слов в названии ветки могут быть:
- символ нижнего подчеркивания (
_
) - тире (он же минус,
-
)