Gitee Support Center / detail

    如何使用 CodeOwners 功能?

    在做日常迭代交付时提交的 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 指派规则

    • 指定的 Codeowner 可以是 @用户名 或 指定邮箱地址
    • 当指定的用户不存于平台,或不存在于仓库的开发者以上角色,不会指派对应用户,且不提供具体提示为什么没指派
    • 指派名单范围仅限于仓库成员名单,企业版超管、管理员与组织管理员不包含在内。
    • CODEOWNER 归属只认最后一条规则
    • CODEOWNER 指派不允许任何人移除,跟随 CODEOWNERS 文件更新而更新
    • CODEOWNERS 加指派:相关 PR 加对应的 CODEOWNER,并添加指派日志(推送人指派了CODEOWNER XXXX)
    • CODEOWNERS 减指派:相关 PR 更新不移除指派,并添加指派日志(推送人移除了 XXXX 的 CODEOWNER 身份)

    Search