Skip to content

Repository files navigation

Как мы работаем с кодом (git-процесс)

Договорено 2026-07-04. Цель — параллельная работа двоих без «всё утекло в main». Обоснование выбора модели — docs/adr/0002-git-workflow.md.

Модель ветвления — GitHub Flow

main всегда зелёный и деплоится. Любое изменение идёт через короткоживущую ветку и PR.

  1. Ветка от main: git switch -c feat/auth-jwt-login
  2. Коммитим, пушим ветку, открываем PR в main.
  3. CI обязателен: мёрдж только при зелёном build + test.
  4. 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 (см. ниже).
  • Ревью «для своего же модуля» приветствуется, но не блокирует.

Владение модулями (CODEOWNERS)

Файл .github/CODEOWNERS закрепляет модули за людьми. Заполняется в Фазе 1, когда появятся пакеты модулей. Черновик соответствия — в task.md §5. Пример строки:

/src/**/auth/        @owner
/src/**/judge/       @teammate
/docs/db-schema.md   @owner @teammate   # общее — нужен апрув обоих

Защита ветки main (настраивается на GitHub)

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 ... (не скрываем использование ИИ).

About

No description, website, or topics provided.

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages