Совместная работаРевью владельцем кода

Ревью владельцами кода

Файл CODEOWNERS позволяет автоматически назначать ответственных за определенные части кода в качестве ревьюеров при создании или обновлении запроса на слияние. Эта функциональность упрощает процесс ревью и обеспечивает контроль качества за счет обязательного участия владельцев кода.


1. Расположение и приоритет файла CODEOWNERS

Файл CODEOWNERS ищется последовательно в следующих каталогах (в порядке убывания приоритета):

  1. /.gitverse/CODEOWNERS.
  2. /CODEOWNERS (в корне репозитория).
  3. /docs/CODEOWNERS.

Если файл существует в нескольких местах, используется только один — с наивысшим приоритетом.


2. Формат файла и синтаксис

Каждая строка файла состоит из:

  1. Шаблона пути (например, *.js, docs/.*).
  2. Одного или нескольких владельцев: @username.

Пример:

# Владельцы для всех JavaScript-файлов
*.js @dev-lead @frontend-lead


# Владельцы для документации
docs/.* @doc-lead

Требования к владельцам:

  1. Владельцы должны иметь доступ к репозиторию (быть соавторами).
  2. Если владелец не имеет доступа, он не будет добавлен в ревьюеры.

3. Автоматическое добавление ревьюеров

  1. Владельцы кода автоматически добавляются в список ревьюеров при:
  • создании нового Запроса на слияние;
  • добавлении нового коммита в существующий Запрос на слияние.
  1. Не добавляются в черновиках запросов на слияние.
  2. После добавления нельзя вручную удалить или добавить владельца кода в список ревьюеров — только через редактирование файла CODEOWNERS.
  3. При откате коммита добавленные владельцы остаются в списке ревьюеров.
  4. Изменения в CODEOWNERS в рамках существующего Запроса на слияние не применяются. Обновленный список владельцев будет использован только в новых запросах или при добавлении нового коммита в существующий запрос.

Список владельцев кода не является статичным и может быть обновлен в ходе жизни запроса на слияние в следующих случаях:

  • при добавлении нового коммита в существующий запрос на слияние;
  • при переводе запроса на слияние из статуса «Черновик» в обычный (готовый к ревью).

В обоих случаях система:

  • анализирует текущую версию файла CODEOWNERS из целевой ветки (например, main);
  • сопоставляет измененные файлы в запросе на слияние с правилами из этого файла;
  • добавляет в список ревьюеров новых владельцев кода, если они соответствуют затронутым путям.

⚠️ Важные уточнения:

  • уже добавленные владельцы кода не удаляются, даже если они больше не соответствуют правилам CODEOWNERS, они становятся обычными ревьюерами, которых можно вручную удалить;
  • перевод запроса на слияние в черновик (из обычного состояния) не вызывает пересчета списка;
  • при переводе запроса на слияние в черновик и обратно одобрения от владельцев кода сбрасываются;
  • изменения в файле CODEOWNERS, внесенные внутри самого запроса на слияние, не учитываются — используется только версия из целевой ветки.

4. Интеграция с защитой веток

В настройках правила защиты ветки можно включить опцию Запрашивать проверку от владельцев кода :

  1. Перейти в Настройки репозитория.
  2. Подраздел Ветки.
  3. Пункт Утверждение запросов на слияние.
  4. Указать необходимое кличество одобрений.
  5. Включить Запрашивать проверку от владельцев кода.

При включении:

  • для слияния запроса обязательно требуется хотя бы одно одобрение от владельца кода, автоматически добавленного из CODEOWNERS;
  • эта настройка взаимоисключающая с опцией Разрешить определенному списку;
  • минимальное количество одобрений — 1, максимальное значение — 100.

💡 В инфоблоке запроса на слияние отображается количество одобрений.
💡 События одобрения от владельцев кода отображаются в ленте событий запроса на слияние.


5. Ограничения

  • владельцы кода не добавляются, если запрос создан из форка, требуется пересохранить файл CODEOWNERS для того, чтобы он стал учитываться;
  • уведомления (в колокольчик или на почту) по CODEOWNERS не реализованы.