-
Notifications
You must be signed in to change notification settings - Fork 3
Workflow
Здесь описан процесс работы с трекером и системой контроля версий.
Мы используем трекер https://github.com/it-workshop/caroline/issues для постановки задач. Любой код должен быть связан с какой-либо задачей. Задача ассигнится на одного конкретного человека, который ее будет делать. Если не понятно, на кого поставить задачу, можно аставить её ничейной, значит в ближайшее время нужно будет обсудить её и решить, кто будет её делать.
Для упрощения нам жизни, мы используем систему воркпэккэджей. Что это значит: каждая задача бьется на n частей, каждая из которых делается отдельным wp. Каждый wp делается в отдельной ветке git репозитория. Предполагается, что над каждой веткой работает только один человек и может творить с ней любой беспредел (git commit --amend, git rebase, git reset --hard, git push -f, etc.), и это никак не затронет остальных людей, работающих над проектом. Также предполагается, что каждый workpackage делается не больше недели.
Что это дает:
- Свободу действий в рамках своей ветки;
- Короткие итерации работы над проектом;
- Все работают над боле-менее свежим состоянием исходного кода;
- Все задачи изолированы друг от друга;
- Все изменения проходят через ревью.
Итак, каждый wp живет в отдельной ветке под именем wp/${номер задачи}/${номер wp в рамках этой задачи}. Никто ничего не коммитит напрямую в мастер. Никто не мерджит свои ветки в мастер самостоятельно. После того, как работа над wp закончена, ветка заливается в основной репозиторий и создается пулл-реквест.
Пулл-реквесты — основной способо влияния кода в основную ветку проекта. созданный пулл-реквест должен пройти ревью. Ревьювер должен оценить решение задачи, может дать комментарий по тому, как можно было сделать лучше и почему, а также указать на ошибки в стиле или логике. Ревьювер не является истиной в последней инстанции. Если ревьювер не прав, нужно объяснить почему. Ревью — это инструмент для обмена опытом между членами команды. Любые изменения в ветке при этом делает только автор изменений. Ревьювер не должен все переделывать, потому что он считает, что так правильнее. Ревьювером может быть любой.
По хорошему, перед мерджем пулл-реквеста, нужно проверить, что ветка собирается на всех платформах и на всех платформах успешно проходят тесты. В будующем мы возможно сделаем это дело автоматическим, но это пока мечты. Поэтому стоит прогонять сборку/тесты на всех доступных платформах.