Мы используем GitHub Flow, коротко о нем:
Ветка | Описание |
master | Ветка со стабильным кодом (в 99.9% эта ветка лежит в production, см. ниже) |
task-id | Используется при желании внести изменения в ветку master (будь то новый функционал, изменение текущего или исправление ошибки). Ветвление всегда происходит от ветки master. Если в случае разработке появились ветки ответвленные от ветки task, то перед влитием в master, ответвленные ветки должны сначала быть влиты в родительскую ветку task и только потом родительская ветка task вливается в master. Пример именования ветки: feature/IBM-123-news |
* QA подтверждает успешно пройденные тесты или допустимые риски
** последовательность подмерживания task веток в ветку releaseX и вмерживания task веток в ветку master должна быть одинакова
*** продолжительность времени стабильной работы каждая команда определяет для себя самостоятельно, но мы придерживаемся короткого интервала времени, потому что в случае серьезных проблем с миграциями, может понадобится ручной откат миграций, чем меньше времени пройдет, тем меньше проблем принесет нестабильный релиз.
Сообщение к коммиту должно быть в виде:
task-id message
где message это описание того, что было сделано в рамках данного коммита
У нас включена опция "Squash commits", следовательно все комиты при мерже ПР (пулл-реквеста) объединяются в один с описанием того, что будет написано в ПР, отсюда следует, что код не связанный с выполняемой задачей нужно писать в отдельных ПР, прошу иметь это ввиду при разработке.