Договорено 2026-07-04. Цель — параллельная работа двоих без «всё утекло в main». Обоснование выбора модели —
docs/adr/0002-git-workflow.md.
main всегда зелёный и деплоится. Любое изменение идёт через короткоживущую ветку и PR.
- Ветка от
main:git switch -c feat/auth-jwt-login - Коммитим, пушим ветку, открываем PR в
main. - CI обязателен: мёрдж только при зелёном build + test.
- Squash-merge → один коммит на фичу в
main. Ветку после мёрджа удаляем.
- Ветка живёт часы–дни, не недели. Большая фича режется на несколько маленьких PR.
- Маленький PR ревьюится за минуты и почти не конфликтует.
- Каждый день подтягивай
mainв свою ветку (git pull --rebase origin main), чтобы ветка не расходилась и мёрдж оставался тривиальным. - 🚫 Прямой push в
mainзапрещён всегда. Даже свой код — только через PR.
тип/модуль-краткое-описание, тип из списка коммитов ниже.
Примеры: feat/auth-jwt-login, fix/submissions-status-race, chore/ci-github-actions.
- CI зелёный = можно мёрджить самому свой PR (не блокируем друг друга, когда один недоступен).
- Но PR, затрагивающий чужой модуль или общее (сборка, CI,
docs/db-schema.md, миграции), требует апрува владельца — черезCODEOWNERS(см. ниже). - Ревью «для своего же модуля» приветствуется, но не блокирует.
Файл .github/CODEOWNERS закрепляет модули за людьми. Заполняется в Фазе 1, когда появятся
пакеты модулей. Черновик соответствия — в task.md §5. Пример строки:
/src/**/auth/ @owner
/src/**/judge/ @teammate
/docs/db-schema.md @owner @teammate # общее — нужен апрув обоих
Settings → Branches → Add rule для main. Разворачиваем в два этапа:
Сейчас:
- Require a pull request before merging
- Require review from Code Owners
- Do not allow bypassing the above settings
- Block force pushes / запрет удаления ветки
После Фазы 0 (появится GitHub Actions):
- Require status checks to pass (build + test)
- Require branches to be up to date before merging
Формат: тип: краткое описание (тип: feat / fix / chore / docs / refactor / test).
Если помогала нейронка — трейлер Co-Authored-By: Claude ... (не скрываем использование ИИ).