代码所有者
- Tier: Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
使用 Code Owners 功能来定义谁对项目代码库的特定部分拥有专业知识。 在仓库中定义文件和目录的所有者,以便:
-
要求所有者批准更改。将受保护分支与 Code Owners 结合使用,要求专家在合并请求合并到受保护分支之前对其进行批准。更多信息,请参见 Code Owners 和受保护分支。
-
识别所有者。Code Owner 的名称显示在他们拥有的文件和目录上:
代码所有者和审批规则
将 Code Owners 与合并请求的 审批规则(无论是可选还是必需) 结合使用,以构建灵活的审批工作流:
- 使用 Code Owners 确保质量。定义对仓库中特定路径拥有领域专业知识的用户。
- 使用审批规则定义与特定文件路径不对应的专长领域。审批规则帮助引导合并请求创建者找到正确的审查者集合,例如前端开发人员或安全团队。
例如:
| 类型 | 名称 | 范围 | 注释 |
|---|---|---|---|
| 审批规则 | UX | 所有文件 | 用户体验(UX)团队成员审查项目中所有更改的用户体验。 |
| 审批规则 | 安全 | 所有文件 | 安全团队成员审查所有更改以发现漏洞。 |
| 代码所有者审批规则 | 前端:代码风格 | *.css 文件 |
前端工程师审查 CSS 文件更改是否符合项目风格标准。 |
| 代码所有者审批规则 | 后端:代码审查 | *.rb 文件 |
后端工程师审查 Ruby 文件的逻辑和代码风格。 |
有关谁有资格作为审批者或代码所有者批准合并请求的信息,请参见 按成员类型的审批者。
代码所有者和受保护分支
为确保合并请求的更改由 CODEOWNERS 文件 中指定的代码所有者进行审查和批准,合并请求的目标分支必须是
受保护的,并且必须启用
代码所有者审批。
在受保护分支上启用代码所有者审批后,以下功能可用:
实际示例
你的项目在 config/ 目录中包含敏感和重要信息。你可以:
- 分配该目录的所有权。为此,请设置一个
CODEOWNERS文件。 - 为你的默认分支创建一个受保护分支。例如,
main。 - 在受保护分支上启用 代码所有者必需审批。
- 可选。编辑
CODEOWNERS文件以添加多个审批的规则。
通过此配置,更改 config/ 目录中文件并目标为 main 分支的合并请求
在合并前需要指定代码所有者的批准。
允许推送到和合并到受保护分支
允许推送和合并 的用户可以选择为其更改创建合并请求, 或将更改直接推送到分支。如果用户 跳过合并请求流程,受保护分支功能 和内置在合并请求中的代码所有者审批也会被跳过。
此权限通常授予与 自动化(内部用户) 和发布工具相关的账户。
没有 允许推送 权限的用户的所有更改都必须通过合并请求进行路由。
查看文件或目录的代码所有者
要查看文件或目录的代码所有者:
- 在左侧边栏,选择 搜索或转到 并找到你的项目。
- 选择 代码 > 仓库。
- 转到你想要查看代码所有者的文件或目录。
- 可选。选择一个分支或标签。
GitLab 在页面顶部显示代码所有者。
设置代码所有者
先决条件:
- 你必须拥有推送到默认分支或创建合并请求的权限。
- 在你的首选位置创建一个
CODEOWNERS文件。 - 按照
CODEOWNERS语法 在文件中定义一些规则。 一些建议:- 配置 所有符合条件的审批者 审批规则。
- 在受保护分支上要求代码所有者批准。
- 提交你的更改,并将它们推送到 GitLab。
CODEOWNERS 文件
CODEOWNERS 文件定义了谁负责 GitLab 项目中的代码。
其目的是:
- 为特定的文件和目录定义代码所有者。
- 强制执行受保护分支的审批要求。
- 在项目中传达代码所有权。
此文件确定谁应该审查和批准更改,并确保正确的 专家参与代码更改。
每个仓库使用一个 CODEOWNERS 文件。GitLab 按以下顺序检查你仓库中的这些位置。
找到的第一个 CODEOWNERS 文件将被使用,而
所有其他文件都将被忽略:
- 在根目录中:
./CODEOWNERS。 - 在
docs目录中:./docs/CODEOWNERS。 - 在
.gitlab目录中:./.gitlab/CODEOWNERS。
有关更多信息,请参见 CODEOWNERS 语法 和 高级 CODEOWNERS 配置。