合并请求批准设置

你可以为合并请求审核配置设置来确保审批规则满足你的用例。你还可以配置审批规则,这里面可以定义合并请求在被合并去之前需要审核的用户数量和类型。合并请求审核设置定义了如何应用这些规则。

用户可以结合任何设置来配置合并请求的审核限制:

编辑合并请求批准设置

查看或编辑合并请求批准设置:

  1. 转到您的项目并选择 设置 > 合并请求
  2. 展开 批准

从实例或顶级群组中逐级下放设置。

为了简化审批规则设置的管理,您应该在最广泛的可能级别配置审批规则。规则创建:

如果群组或项目继承了设置,你不能在继承群组或项目中更改它们。你必须在起源位置更改设置:也就是在顶级群组或实例中。

禁止作者批准

默认情况下,合并请求的作者无法批准它。要更改此设置:

  1. 在左侧导航栏,选择 搜索或前往 并找到您的项目。
  2. 选择 设置 > 合并请求
  3. 合并请求批准 部分,滚动到 批准规则,并清除 禁止作者批准 复选框。
  4. 选择 保存更改

作者可以编辑单个合并请求中的批准规则并覆盖此设置,除非您配置以下选项之一:

  • 在项目级别禁止覆盖默认批准
  • (仅限私有化部署实例) 在实例级别禁止覆盖默认批准。在实例级别配置时,您无法在项目或单个合并请求级别编辑此设置。

禁止添加提交的用户批准

  • 功能标志 keep_merge_commits_for_approvals 被添加到 GitLab 16.3,用于在检查中包含合并提交。
  • 功能标志 keep_merge_commits_for_approvals 被从 GitLab 16.5 中移除。现在此检查包含合并提交。

默认情况下,提交合并请求的用户仍然可以批准。在项目级别或实例级别,您可以禁止提交者批准部分属于他们自己的合并请求。操作如下:

  1. 在左侧导航栏,选择 搜索或前往 并找到您的项目。
  2. 选择 设置 > 合并请求
  3. 合并请求批准 部分,滚动到 批准规则,并选择 禁止添加提交的用户批准 复选框。如果清除此复选框,管理员在实例级别已禁用它,并且无法在项目级别进行更改。
  4. 选择 保存更改

提交到合并请求的代码所有者无法批准它,如果合并请求影响了他们拥有的文件。

禁止在合并请求中编辑批准规则

默认情况下,用户可以在每个合并请求的基础上覆盖您为项目创建的批准规则。如果您不希望用户更改合并请求的批准规则,您可以禁用此设置:

  1. 在左侧导航栏,选择 搜索或前往 并找到您的项目。
  2. 选择 设置 > 合并请求
  3. 合并请求批准 部分,滚动到 批准规则,并选择 禁止在合并请求中编辑批准规则 复选框。
  4. 选择 保存更改

当您更改此字段时,所有打开的合并请求将受到影响,具体取决于设置:

  • 如果用户之前可以编辑批准规则,您禁用此行为,则极狐GitLab 更新所有打开的合并请求以强制执行批准规则。
  • 如果用户之前不能编辑批准规则,您启用批准规则编辑,打开的合并请求保持不变。这保留了在这些合并请求中所做的任何更改。

需要用户重新认证来审批

  • 对 JihuLab.com 群组需要通过使用 SAML 认证来重新认证的支持引入于极狐GitLab 16.6,使用名为 ff_require_saml_auth_to_approve 的功能标志。默认禁用。
  • 对自托管实例需要通过使用 SAML 认证来重新认证的支持引入于极狐GitLab 16.7,使用名为 ff_require_saml_auth_to_approve 的功能标志。默认禁用。
  • 在极狐GitLab 中,ff_require_saml_auth_to_approve 默认为 JiHuLab.om 和私有化部署实例启用。
在私有化部署实例上,默认情况下,通过使用 SAML 认证来要求重新认证是可用的。要隐藏此功能,管理员可以禁用功能标志 ff_require_saml_auth_to_approve。在 JihuLab.com 上,此功能可用。

您可以强制潜在的审批人首先使用 SAML 或密码进行身份验证。此权限启用电子签名,例如由 Code of Federal Regulations (CFR) Part 11 定义的电子签名。

先决条件:

  • 此设置仅在顶级群组上可用。
  1. 在左侧导航栏,选择 搜索或前往 并找到您的项目。
  2. 启用密码认证和 SAML 认证。更多详情:
  3. 在左侧导航栏,选择 设置 > 合并请求
  4. 合并请求批准 部分,滚动到 批准设置,并选择 需要用户重新认证(密码或 SAML)来审批
  5. 选择 保存更改

将提交添加到源分支时删除所有批准

默认情况下,即使您在批准后添加更多更改,对合并请求的批准仍然存在。如果要在添加更多更改时删除合并请求上的所有现有批准:

  1. 在左侧导航栏,选择 搜索或前往 并找到您的项目。
  2. 选择 设置 > 合并请求
  3. 合并请求批准 部分,滚动到 批准规则,并选择 将提交添加到源分支时删除所有批准 复选框。
  4. 选择 保存更改

极狐GitLab 使用 git patch-id 来识别合并请求中的差异。此值是一个合理稳定的唯一标识符,而且它能够智能地决定是否重置审批。当您推送变更到合并请求时,patch-id 会与之前的 patch-id 进行比较,以确定是否需要重置审批。这能让极狐GitLab 在您执行 git rebasegit merge <target> 等命令时做出更明智的重置决策。

如果代码所有者的文件发生更改,则删除他们的批准

  • 引入于 15.3 版本。

当添加提交时,如果您只想删除文件已更改的代码所有者的批准:

先决条件:

  • 您必须至少具有项目的维护者角色。

去做这个:

  1. 在左侧导航栏,选择 搜索或前往 并找到您的项目。
  2. 选择 设置 > 合并请求
  3. 合并请求批准 部分,滚动到 批准规则,并选择 如果代码所有者的文件发生更改,则删除他们的批准
  4. 选择 保存更改

相关主题