gitlab-org--gitlab-foss/doc/user/project/code_owners.md
Marcel Amirault 73c6477b7e Changing badges to use parentheses not brackets
Previously, we used brackets to denote the tier badges,
but this made Kramdown, the docs site Markdown renderer,
show many warnings when building the site. This is now
fixed by using parentheses instead of square brackets.

This was caused by [PREMIUM] looking like a link to
Kramdown, which couldn't find a URL there.

See:
- https://gitlab.com/gitlab-com/gitlab-docs/merge_requests/484
- https://gitlab.com/gitlab-org/gitlab-ce/issues/63800
2019-07-08 08:50:38 +00:00

3.1 KiB

Code Owners (STARTER)

You can use a CODEOWNERS file to specify users or shared groups that are responsible for certain files in a repository.

You can choose and add the CODEOWNERS file in three places:

  • to the root directory of the repository
  • inside the .gitlab/ directory
  • inside the docs/ directory

The CODEOWNERS file is scoped to a branch, which means that with the introduction of new files, the person adding the new content can specify themselves as a code owner, all before the new changes get merged to the default branch.

When a file matches multiple entries in the CODEOWNERS file, the users from all entries are displayed on the blob page of the given file.

The syntax of Code Owners files

Files can be specified using the same kind of patterns you would use in the .gitignore file followed by the @username or email of one or more users or by the @name of one or more groups that should be owners of the file.

The order in which the paths are defined is significant: the last pattern that matches a given path will be used to find the code owners.

Starting a line with a # indicates a comment. This needs to be escaped using \# to address files for which the name starts with a #.

Example CODEOWNERS file:

# This is an example code owners file, lines starting with a `#` will
# be ignored.

# app/ @commented-rule

# We can specify a default match using wildcards:
* @default-codeowner

# Rules defined later in the file take precedence over the rules
# defined before.
# This will match all files for which the file name ends in `.rb`
*.rb @ruby-owner

# Files with a `#` can still be accesssed by escaping the pound sign
\#file_with_pound.rb @owner-file-with-pound

# Multiple codeowners can be specified, separated by whitespace
CODEOWNERS @multiple @owners	@tab-separated

# Both usernames or email addresses can be used to match
# users. Everything else will be ignored. For example this will
# specify `@legal` and a user with email `janedoe@gitlab.com` as the
# owner for the LICENSE file
LICENSE @legal this_does_not_match janedoe@gitlab.com

# Group names can be used to match groups and nested groups to specify
# them as owners for a file
README @group @group/with-nested/subgroup

# Ending a path in a `/` will specify the code owners for every file
# nested in that directory, on any level
/docs/ @all-docs

# Ending a path in `/*` will specify code owners for every file in
# that directory, but not nested deeper. This will match
# `docs/index.md` but not `docs/projects/index.md`
/docs/* @root-docs

# This will make a `lib` directory nested anywhere in the repository
# match
lib/ @lib-owner

# This will only match a `config` directory in the root of the
# repository
/config/ @config-owner

# If the path contains spaces, these need to be escaped like this:
path\ with\ spaces/ @space-owner