Code owners

As your team and products grow, expertise in areas of your code base can be fragmented between different members of the team. This can make finding the right people to notify or request reviews on changes difficult. Now, you can add code owners to your repository as a way for developers to maintain ownership over different areas of the code base. Code owners will be automatically added to pull requests in the areas of the code base they own.

When creating a new pull request, Bitbucket will automatically check if a CODEOWNERS file exists in the repository. Bitbucket checks for this file in the .bitbucket folder. If the file is found, every rule in that file is compared to the diff of your pull request. For each matching rule, the users associated with it are automatically added as suggested reviewers.

As code owners is a branch-based config, you can have different code owners on different branches. Bitbucket will always use the CODEOWNERS file on the target branch of your pull request.

The CODEOWNERS file

Create the CODEOWNERS file under the .bitbucket folder, on your branch of choice. Compose the file using the following rules:

  • Every code owner rule should be declared on a separate line.

  • A code owner rule is composed of branch patterns referring to a path in the repository followed by any number of users.

  • Users are specified either by email or usernames prepended with the @ character.

  • Users must have the repository read permission in the target repository. Invalid identifiers or users without permission won’t be added.

  • Comments can be declared on a line starting with the # character.

Here’s an example of the CODEOWNERS file:

# Comments in a CODEOWNERS file are prepended with the '#' character
# Empty lines are also ignored

# One code owners rule is used for each changed file in a pull request. 
# Lower rules take precedence over higher rules, so this rule will only be applied
# if no other rules match a given change in the pull request. The below rule matches
# all changes in the repository, so unless a rule lower in the file matches,
# globalowner will always be suggested as a code owner
** globalowner@example.com

# Email addresses and bitbucket usernames can both be used when specifying code owners
/features/FeatureCode.java @developer-1 developer-2@example.com

# Branch patterns can match specific paths in your repository, or file types, or both!
# This pattern will match all CSS files in the repository
**.css @developer-1

# This pattern will match every file in the app/frontend directory, and all subdirectories
app/frontend/ @developer-2

# This pattern will match every CSS file in the app/frontend directory, and all subdirectories
app/frontend/**.css @developer-3

# A rule with a path and no owners is still matched, and can be used to prevent code owners
# from being added for a given file. Below, changes made in the docs directory will include
# content-designer as a code owner, unless those changes are in images, in which case no
# reviewer is added
docs/** @content-designer
docs/images/**

Limits

The maximum size of the CODEOWNERS file is 500 KB. If the size is larger than this, the file won’t be read. You can increase or decrease the maximum file size by changing code.owners.maximum.filesize in shared/bitbucket.properties.

No more than 100 reviewers will ever be added automatically to a pull request regardless of how many rules match. This restriction prevents hundreds of reviewers from being added to large pull requests. You can increase or decrease the reviewer limit by changing code.owners.maximum.users in shared/bitbucket.properties.

Last modified on Mar 13, 2024

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.