如何配置CODEOWNERS规则,仅赋予用户项目根目录文件所有权?
如何配置CODEOWNERS让用户仅拥有项目根目录文件所有权?
项目结构
project │ README.md │ config.json │ package.json │ └───folder1 │ │ fileA.js │ │ fileB.html │ └───folder2 │ fileC.js │ fileD.html
需求
让用户johnSmith仅拥有项目根目录下所有文件的所有权,不包含任何子目录内的文件。
已尝试的无效写法
# CODEOWNERS / @johnSmith ./ @johnSmith /* @johnSmith
正确解决方案
有两种可靠的实现方式:
方式1:逐个指定根目录文件(推荐,明确无歧义)
直接列出根目录下的每个文件,确保仅这些文件归johnSmith所有:
# 根目录文件所有权配置 README.md @johnSmith config.json @johnSmith package.json @johnSmith
方式2:使用否定规则排除子目录
如果根目录文件较多,可先匹配根目录所有项,再排除子目录(注意规则顺序):
# 先匹配根目录所有文件和目录 /* @johnSmith # 排除两个子目录,子目录内的文件不再继承所有权规则 !/folder1/ !/folder2/
为什么之前的写法无效?
/ @johnSmith和./ @johnSmith:这两种写法都会匹配整个仓库的所有文件(包括子目录内的文件),不符合需求。/* @johnSmith:该规则会匹配根目录下的所有文件和子目录本身,子目录内的文件会因路径匹配优先级继承此规则,导致johnSmith仍拥有子目录文件的所有权。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

