Частично идея была позаимствована от GitFlow и TensorFlow (стандарт работы с git в компании Tensor)
masterrc-{номер версии}(можно так же обозначать, как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-sidebarm/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.
- Если есть
Разделители слов в названии ветки могут быть:
- символ нижнего подчеркивания (
_) - тире (он же минус,
-)
