合并请求审批设置
- Tier: Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
您可以为 合并请求审批 配置设置,以确保审批规则满足您的用例。您还可以配置 审批规则,这些规则定义了在合并工作之前必须批准的用户数量和类型。合并请求审批设置定义了如何随着合并请求接近完成而应用这些规则。
使用这些设置的任意组合来配置合并请求的审批限制:
- 防止作者审批: 防止合并请求的作者批准它。
- 防止添加提交的用户审批: 防止向合并请求添加提交的用户同时批准它。
- 防止在合并请求中编辑审批规则: 防止用户在合并请求上覆盖项目审批规则。
- 要求用户重新认证(密码或 SAML)才能审批: 强制潜在审批者首先使用密码或 SAML 进行身份验证。
- 代码所有者审批移除:定义当向合并请求添加提交时现有审批会发生什么。
- 保留审批:不删除任何审批。
- 移除所有审批: 移除所有现有审批。
- 如果文件被更改则移除代码所有者的审批: 如果代码所有者批准了合并请求,并且后续提交更改了他们作为代码所有者的文件,则他们的审批将被移除。
编辑合并请求审批设置
要查看或编辑单个项目的合并请求审批设置:
- 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
- 选择 设置 > 合并请求。
- 展开 审批。
从实例或顶级组级联设置
为了简化审批规则设置的管理,请在尽可能广泛的级别配置审批规则。创建的规则:
如果组或项目继承设置,您不能在继承的组或项目中更改它们。您必须更改它们起源的设置:顶级组或实例。
防止作者审批
默认情况下,合并请求的作者不能批准它。要更改此设置:
- 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
- 选择 设置 > 合并请求。
- 在 合并请求审批 部分,滚动到 审批设置 并 清除 防止作者审批 复选框。
- 选择 保存更改。
作者可以在单个合并请求中编辑审批规则并覆盖此设置,除非您配置以下选项之一:
防止添加提交的用户审批
默认情况下,向合并请求提交的用户仍然可以批准它。您可以防止您的项目或实例中的提交者批准部分是他们自己的合并请求:
- 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
- 选择 设置 > 合并请求。
- 在 合并请求审批 部分,滚动到 审批设置 并 选择 防止添加提交的用户审批。 如果此复选框被清除,管理员已为您的实例 禁用它,并且 您不能为您的项目更改它。
- 选择 保存更改。
向合并请求提交的 代码所有者 如果合并请求影响他们拥有的文件,则不能批准它。
有关更多信息,请参阅 官方 Git 文档。
防止在合并请求中编辑审批规则
默认情况下,用户可以基于每个合并请求覆盖您 为项目创建的 审批规则。如果您不希望用户更改合并请求上的审批规则,可以禁用此设置:
- 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
- 选择 设置 > 合并请求。
- 在 合并请求审批 部分,滚动到 审批设置 并 选择 防止在合并请求中编辑审批规则。
- 选择 保存更改。
此更改会影响所有打开的合并请求。
当您更改此字段时,根据设置,它可能会影响所有打开的合并请求:
- 如果用户以前可以编辑审批规则,而您禁用此行为, GitLab 会更新所有打开的合并请求以强制执行审批规则。
- 如果用户以前不能编辑审批规则,而您启用审批规则 编辑,打开的合并请求将保持不变。这保留了已对那些合并请求中的审批规则所做的任何更改。
要求用户重新认证才能审批
在 GitLab 自托管上,默认情况下使用 SAML 认证要求重新认证可用。要隐藏此功能,管理员可以
禁用名为 ff_require_saml_auth_to_approve 的功能标志。在 GitLab.com 和 GitLab Dedicated 上,此功能可用。
您可以强制潜在审批者首先使用 SAML 或密码进行身份验证。 此权限为审批启用电子签名,例如由 联邦法规 (CFR) 第 11 部分 定义的签名。
先决条件:
- 此设置仅在顶级组上可用。
- 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
- 启用密码认证和 SAML 认证。有关更多信息:
- 密码认证,请参阅 登录限制文档。
- GitLab.com 组的 SAML 认证,请参阅 GitLab.com 组的 SAML SSO 文档。
- GitLab 自托管实例的 SAML 认证,请参阅 GitLab 自托管的 SAML SSO。
- 在左侧边栏,选择 设置 > 合并请求。
- 在 合并请求审批 部分,滚动到 审批设置 并 选择 要求用户重新认证(密码或 SAML)才能审批。
- 选择 保存更改。
当向源分支添加提交时移除所有审批
- Tier: Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
默认情况下,当您在审批后添加更多更改时,合并请求上的审批将被移除。
GitLab 使用 git patch-id 来识别合并请求中的差异。这个值是一个相当稳定和唯一的标识符,它使 GitLab 能够更智能地决定是否重置合并请求内的审批。当您向合并请求推送新更改时,会将 patch-id 与之前的 patch-id 进行比较,以确定是否应该重置审批。这使 GitLab 在您在功能分支上执行类似 git rebase 或 git merge <target> 的命令时能够做出更好的重置决策。
要在向合并请求添加更多更改后保留现有审批:
- 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
- 选择 设置 > 合并请求。
- 在 合并请求审批 部分,滚动到 审批设置 并 清除 移除所有审批 复选框。
- 选择 保存更改。
如果您自动化合并请求的创建和审批,请构建逻辑以确保在批准合并请求之前完全处理提交。这可以防止意外的审批重置。有关更多详细信息,请参阅 自动化合并请求的审批。
如果文件被更改则移除代码所有者的审批
仅从文件在新提交中更改的代码所有者那里移除审批:
先决条件:
- 您必须至少拥有项目的 Maintainer 角色。
执行此操作:
- 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
- 选择 设置 > 合并请求。
- 在 合并请求审批 部分,滚动到 审批设置 并 选择 如果文件被更改则移除代码所有者的审批。
- 选择 保存更改。