在做日常迭代交付时提交的 PR,指定组内成员进行代码评审,当代码变更涉及到某文件或目录 A 时,大多数情况下会指派固定的人员 B 进行代码评审。我们就可以称为 B 是 组件 A 的 CodeOwner。简单来说,Codeowner 用来定义谁负责仓库中的特定文件或目录。
想要使用 CodeOwner 功能,需要在仓库中指定的位置创建一个名为CODEOWNERS
文件,它们仅适用于当前分支,指定的位置为:
.gitee/
目录中docs/
目录中CODEOWNERS 文件案例
# Code Owners for a file
filename @username1 @username2
# Code Owners for a directory
# You can also use email addresses if you prefer.
directoryname/ @username1 XXXX@qq.com
# 正则匹配
*.rb @liwen
# 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
当文件匹配文件中的多个CODEOWNERS
规则时,将使用匹配文件的最后一个模式中的用户。例如:
README.md @user1
# This line would also match the file README.md
*.md @user2
README.md
的代码所有者是@user2
,每个文件路径只能匹配一个CODEOWNERS
规则。
语法转义
\
对以 #
开头的模式转义,使其被当作模式而不是注释;[ ]
定义分组范围,分组使用方法如下:[Documentation]
ee/docs/ @docs
docs/ @docs
[Database]
README.md @database
model/db/ @database
[DOCUMENTATION]
README.md @docs
可以将某个部分设为可选,以便该部分中的代码审核的批准是可选的。
在代码所有者部分名称之前放置一个插入字符^
。例如:
^[Documentation]
*.md @ligen @liqin
[Config]
*.yml @liwen @normalcoder
/app/models @xxx @xxx2
CodeOwner 指派规则