Схема работы с ветками - GitHub Flow

Мы используем GitHub Flow, коротко о нем:

ВеткаОписание
masterВетка со стабильным кодом (в 99.9% эта ветка лежит в production, см. ниже) 
task-idИспользуется при желании внести изменения в ветку master (будь то новый функционал, изменение текущего или исправление ошибки). Ветвление всегда происходит от ветки master. Если в случае разработке появились ветки ответвленные от ветки task, то перед влитием в master, ответвленные ветки должны сначала быть влиты в родительскую ветку task и только потом родительская ветка task вливается в master. Пример именования ветки: feature/IBM-123-news

От задачи к релизу

  1. Когда ветка task готова (протестирована QA*), от ветки master создается ветка release и в нее подмерживается ветка task (если готовы несколько task веток, то task ветки последовательно** подмерживаются в ветку releaseX).
  2. Когда ветка releaseX готова (протестирована QA*), ветка release выкладывается в production.
  3. Если ветка releaseX стабильно*** работает в production, task ветки последовательно** вмерживается в ветку master.

* QA подтверждает успешно пройденные тесты или допустимые риски

** последовательность подмерживания task веток в ветку releaseX и вмерживания task веток в ветку master должна быть одинакова

*** продолжительность времени стабильной работы каждая команда определяет для себя самостоятельно, но мы придерживаемся короткого интервала времени, потому что в случае серьезных проблем с миграциями, может понадобится ручной откат миграций, чем меньше времени пройдет, тем меньше проблем принесет нестабильный релиз.

Коммит

Сообщение к коммиту должно быть в виде:

task-id message

где message это описание того, что было сделано в рамках данного коммита

ПР (пулл-реквест)

У нас включена опция "Squash commits", следовательно все комиты при мерже ПР (пулл-реквеста) объединяются в один с описанием того, что будет написано в ПР, отсюда следует, что код не связанный с выполняемой задачей нужно писать в отдельных ПР, прошу иметь это ввиду при разработке.


16.03.2011 17:52