如何在GitHub CODEOWNERS中排除指定文件,避免自动指派审核人?
GitHub CODEOWNERS 实现目录指定审核人并排除单个文件
场景与需求
文件结构:
foo/file1.c foo/file2.c foo/freeforall.c
要求:MyOrg/foogroup团队需要审核foo目录下所有文件的变更,但foo/freeforall.c除外——修改该文件时不自动添加任何审核人,由修改者自行发起审核请求。
当前CODEOWNERS配置:
foo @MyOrg/foogroup
尝试过的无效方案
- 使用
!语法排除文件:GitHub明确不支持该语法,以下配置无效foo @MyOrg/foogroup !foo/freeforall.c - 逐个指定
foo目录下的文件:文件数量过多,操作不可行 - 将
freeforall.c移至其他目录:不想让CODEOWNERS规则决定组件结构,该文件本应属于foo目录 - 指派给空成员团队:创建
emptygroup并关联该文件,会导致PR要求零成员团队批准,引发阻塞问题foo @MyOrg/foogroup foo/freeforall.c @MyOrg/emptygroup
可行解决方案
在CODEOWNERS中给freeforall.c单独添加一条仅包含路径、无所有者的规则即可:
foo @MyOrg/foogroup foo/freeforall.c
原理说明
GitHub CODEOWNERS的规则优先级是越具体的规则越优先。这条单独的foo/freeforall.c规则没有指定任何所有者,会覆盖上级目录foo的规则,意味着该文件没有默认代码所有者,修改时不会自动添加审核人;而foo目录下的其他文件依然会继承@MyOrg/foogroup作为默认审核人,完全满足需求。
内容的提问来源于stack exchange,提问作者Cory Klein
相关产品推荐
相关产品推荐

