Ревью владельцами кода
Файл CODEOWNERS позволяет автоматически назначать ответственных за определенные части кода в качестве ревьюеров при создании или обновлении запроса на слияние. Эта функциональность упрощает процесс ревью и обеспечивает контроль качества за счет обязательного участия владельцев кода.
1. Расположение и приоритет файла CODEOWNERS
Файл CODEOWNERS ищется последовательно в следующих каталогах (в порядке убывания приоритета):
/.gitverse/CODEOWNERS./CODEOWNERS(в корне репозитория)./docs/CODEOWNERS.
Если файл существует в нескольких местах, используется только один — с наивысшим приоритетом.
2. Формат файла и синтаксис
Каждая строка файла состоит из:
- Шаблона пути (например,
*.js,docs/.*). - Одного или нескольких владельцев:
@username.
Пример:
# Владельцы для всех JavaScript-файлов
*.js @dev-lead @frontend-lead
# Владельцы для документации
docs/.* @doc-leadТребования к владельцам:
- Владельцы должны иметь доступ к репозиторию (быть соавторами).
- Если владелец не имеет доступа, он не будет добавлен в ревьюеры.
3. Автоматическое добавление ревьюеров
- Владельцы кода автоматически добавляются в список ревьюеров при:
- создании нового Запроса на слияние;
- добавлении нового коммита в существующий Запрос на слияние.
- Не добавляются в черновиках запросов на слияние.
- После добавления нельзя вручную удалить или добавить владельца кода в список ревьюеров — только через редактирование файла
CODEOWNERS. - При откате коммита добавленные владельцы остаются в списке ревьюеров.
- Изменения в
CODEOWNERSв рамках существующего Запроса на слияние не применяются. Обновленный список владельцев будет использован только в новых запросах или при добавлении нового коммита в существующий запрос.
Список владельцев кода не является статичным и может быть обновлен в ходе жизни запроса на слияние в следующих случаях:
- при добавлении нового коммита в существующий запрос на слияние;
- при переводе запроса на слияние из статуса «Черновик» в обычный (готовый к ревью).
В обоих случаях система:
- анализирует текущую версию файла
CODEOWNERSиз целевой ветки (например,main); - сопоставляет измененные файлы в запросе на слияние с правилами из этого файла;
- добавляет в список ревьюеров новых владельцев кода, если они соответствуют затронутым путям.
⚠️ Важные уточнения:
- уже добавленные владельцы кода не удаляются, даже если они больше не соответствуют правилам
CODEOWNERS, они становятся обычными ревьюерами, которых можно вручную удалить;- перевод запроса на слияние в черновик (из обычного состояния) не вызывает пересчета списка;
- при переводе запроса на слияние в черновик и обратно одобрения от владельцев кода сбрасываются;
- изменения в файле
CODEOWNERS, внесенные внутри самого запроса на слияние, не учитываются — используется только версия из целевой ветки.
4. Интеграция с защитой веток
В настройках правила защиты ветки можно включить опцию Запрашивать проверку от владельцев кода :
- Перейти в Настройки репозитория.
- Подраздел Ветки.
- Пункт Утверждение запросов на слияние.
- Указать необходимое кличество одобрений.
- Включить Запрашивать проверку от владельцев кода.
При включении:
- для слияния запроса обязательно требуется хотя бы одно одобрение от владельца кода, автоматически добавленного из
CODEOWNERS; - эта настройка взаимоисключающая с опцией Разрешить определенному списку;
- минимальное количество одобрений —
1, максимальное значение —100.
💡 В инфоблоке запроса на слияние отображается количество одобрений.
💡 События одобрения от владельцев кода отображаются в ленте событий запроса на слияние.
5. Ограничения
- владельцы кода не добавляются, если запрос создан из форка, требуется пересохранить файл CODEOWNERS для того, чтобы он стал учитываться;
- уведомления (в колокольчик или на почту) по
CODEOWNERSне реализованы.