Skip to main content

О владельцах кода

Файл CODEOWNERS можно использовать для определения отдельных лиц или команд, ответственных за код в репозитории.

Вы можете определить владельцев кода в общедоступных репозиториях при использовании GitHub Free и GitHub Free для организаций, а также в общедоступных и частных репозиториях при использовании GitHub Pro, GitHub Team, GitHub Enterprise Cloud, и GitHub Enterprise Server. Дополнительные сведения см. в разделе Продукты GitHub.

Пользователи с разрешениями администратора или владельца могут настроить файл CODEOWNERS в репозитории.

Пользователи, которых вы выбираете в качестве владельцев кода, должны иметь разрешения на запись в репозитории. Если владелец кода является командой, то эта команда должна быть видимой и должна иметь разрешения на запись, даже если все отдельные участники команды уже имеют разрешения на запись напрямую, через членство в организации или через другое членство в команде.

О владельцах кода

Владельцы кода автоматически получают запрос для проверки, когда кто-то открывает запрос на вытягивание, который изменяет код, принадлежащий владельцам. Владельцы кода не получают запросов для проверки черновиков запросов на вытягивание автоматически. Дополнительные сведения о черновиках запросов на вытягивание см. в разделе Сведения о запросах на вытягивание. Когда вы помечаете черновик запроса на вытягивание как готовый к проверке, владельцы кода автоматически получают уведомления. Если вы преобразуете запрос на вытягивание в черновик, для пользователей, которые уже подписаны на уведомления, подписка отменена не будет. Дополнительные сведения см. в разделе Изменение этапа запроса на вытягивание.

Если пользователь с разрешениями администратора или владельца включил необходимые проверки, он также может потребовать утверждения от владельца кода, прежде чем автор сможет объединить запрос на вытягивание в репозитории. Дополнительные сведения см. в разделе Сведения о защищенных ветвях.

Если у файла есть владелец кода, вы можете просмотреть, кто является владельцем кода, перед открытием запроса на вытягивание. Для этого перейдите к файлу в репозитории и наведите указатель мыши на .

Владелец кода для файла в репозитории

Расположение файла CODEOWNERS

Чтобы использовать файл CODEOWNERS, создайте новый файл CODEOWNERS в корневом каталоге, каталоге docs/ или .github/ репозитория, в ветви, в которую вы хотите добавить владельцев кода.

Каждый файл CODEOWNERS назначает владельцам кода одну ветвь в репозитории. Таким образом, можно назначить разных владельцев кода для различных ветвей, например, @octo-org/codeowners-team для базы кода в ветви по умолчанию и @octocat для сайта GitHub Pages в ветви gh-pages.

Чтобы владельцы кода получали запросы на проверку, файл CODEOWNERS должен находиться в базовой ветви запроса на вытягивание. Например, если вы назначаете @octocat в качестве владельца кода для файлов .js в ветви gh-pages репозитория, то при открытии запроса на вытягивание, содержащего изменения в файлах .js между головной ветвью и gh-pages, @octocat будет получать запросы на проверку.

Размер файла CODEOWNERS

Размер файла CODEOWNERS не должен превышать 3 МБ. Если размер файла CODEOWNERS превышает это ограничение, то файл не будет загружен, и, следовательно, сведения о владельце кода не будут отображаться, а соответствующие владельцы кода не будут получать запросы для просмотра изменений в запросе на вытягивание.

Чтобы уменьшить размер файла CODEOWNERS, используйте шаблоны с подстановочными знаками для консолидации нескольких записей в одну запись.

Синтаксис файла CODEOWNERS

Предупреждение. Существуют некоторые правила синтаксиса для файлов gitignore, которые не работают в файлах CODEOWNERS:

  • экранирование шаблона, начинающегося с #, с помощью \, так как такой шаблон рассматривается как шаблон, а не как комментарий;
  • использование ! для отмены шаблона;
  • использование [ ] для определения диапазона символов.

В файле CODEOWNERS используется шаблон, который соответствует большинству правил, используемых в файлах gitignore . За шаблоном следует одно или несколько имен пользователей или имен команд GitHub в стандартном формате @username или @org/team-name. Пользователям и командам необходимо явно предоставить доступ write в репозитории, даже если у членов команды уже есть доступ.

В большинстве случаев вы также можете ссылаться на пользователя по адресу электронной почты, который был добавлен в его учетную запись на GitHub.com, например user@example.com. Адрес электронной почты нельзя использовать для ссылки на managed user account. Дополнительные сведения о managed user accounts см. в разделе Сведения о Enterprise Managed Usersв документации по GitHub Enterprise Cloud.

Пути CODEOWNERS чувствительны к регистру, так как GitHub использует файловую систему с учетом регистра. Так как файлы CODEOWNERS обрабатываются GitHub, то даже в системах, которые не учитывают регистр (например, macOS), в файлах CODEOWNERS должны указываться пути и имена файлов с правильным регистром.

Если какая-либо строка в файле CODEOWNERS содержит недопустимый синтаксис, эта строка будет пропущена. При переходе к файлу CODEOWNERS в репозитории на GitHub.comвы увидите все ошибки, выделенные. Список ошибок в файле CODEOWNERS репозитория также доступен через API. Дополнительные сведения см. в разделе Репозитории в документации по REST API.

Пример файла CODEOWNERS

# This is a comment.
# Each line is a file pattern followed by one or more owners.

# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
# @global-owner1 and @global-owner2 will be requested for
# review when someone opens a pull request.
*       @global-owner1 @global-owner2

# Order is important; the last matching pattern takes the most
# precedence. When someone opens a pull request that only
# modifies JS files, only @js-owner and not the global
# owner(s) will be requested for a review.
*.js    @js-owner #This is an inline comment.

# You can also use email addresses if you prefer. They'll be
# used to look up users just like we do for commit author
# emails.
*.go docs@example.com

# Teams can be specified as code owners as well. Teams should
# be identified in the format @org/team-name. Teams must have
# explicit write access to the repository. In this example,
# the octocats team in the octo-org organization owns all .txt files.
*.txt @octo-org/octocats

# In this example, @doctocat owns any files in the build/logs
# directory at the root of the repository and any of its
# subdirectories.
/build/logs/ @doctocat

# The `docs/*` pattern will match files like
# `docs/getting-started.md` but not further nested files like
# `docs/build-app/troubleshooting.md`.
docs/*  docs@example.com

# In this example, @octocat owns any file in an apps directory
# anywhere in your repository.
apps/ @octocat

# In this example, @doctocat owns any file in the `/docs`
# directory in the root of your repository and any of its
# subdirectories.
/docs/ @doctocat

# In this example, any change inside the `/scripts` directory
# will require approval from @doctocat or @octocat.
/scripts/ @doctocat @octocat

# In this example, @octocat owns any file in the `/apps`
# directory in the root of your repository except for the `/apps/github`
# subdirectory, as its owners are left empty.
/apps/ @octocat
/apps/github

Файлы CODEOWNERS и защита ветвей

Владельцы репозитория могут добавлять правила защиты ветви, чтобы измененный код проверялся владельцами измененных файлов. Дополнительные сведения см. в разделе Сведения о защищенных ветвях.

Дополнительные материалы