从 CODEOWNERS 中排除文件或目录

Cor*_*ein 8 github github-codeowners

我有一个像这样的文件结构:

foo/file1.c
foo/file2.c
foo/freeforall.c
Run Code Online (Sandbox Code Playgroud)

My foogroupon GitHub 需要审核对所有内容的更改,foo freeforall.c任何人都可以不受限制地触摸的文件除外,因此在对其进行更改时,它不应该自动将任何人添加为审核者。

(实际上,无论谁修改,freeforall.c都只需要求自己团队中的其他人审查他们的更改。)

问题

我如何使用 GitHub 代码所有者来做到这一点?该文件现在看起来像这样:

foo @MyOrg/foogroup
Run Code Online (Sandbox Code Playgroud)

我尝试过的

GitHub 明确表示不支持该!语法,因此不起作用:

foo @MyOrg/foogroup
!foo/freeforall.c
Run Code Online (Sandbox Code Playgroud)

并且目录中的文件太多,foo无法单独显式包含它们。我可以移动freeforall.c到不同的目录,但实际上我不想让 GitHub 的 CODEOWNER 功能决定我如何组织我的组件。我 freeforall.c进入foo目录,那是它所属的地方!

我还考虑创建一个emptygroup来分配该文件,但很快意识到现在我需要一个零成员的组必须批准对该文件的 PR,这显然会导致问题。

foo @MyOrg/foogroup
foo/freeforall.c @MyOrg/emptygroup
Run Code Online (Sandbox Code Playgroud)

Mat*_*att 14

CODEOWNERS文件考虑最后一个匹配行。您可以使用空所有者进行定义,以指定没有所有者的路径/文件。

因此,您可以使用以下行将foo目录中的所有文件归为@MyOrg/foogroupexcept所拥有foo/freeforall.c

foo @MyOrg/foogroup
foo/freeforall.c
Run Code Online (Sandbox Code Playgroud)