更新时间:2024-11-19 GMT+08:00

设置代码仓库级的合并请求规则

合并请求配置是指代码合入条件、合入模式的配置,且项目级的合入请求规则可继承到代码仓库、代码组。

您可以勾选“继承项目设置”,自动继承并使用项目下设置且不支持更改。您也可以进入要配置的代码仓库首页,选择“设置” > “策略设置” > “合并请求”。合并请求有两种机制,打分机制和审核机制,两种模式区别如下:

  • 打分机制,该模式仅包含代码检视,以打分为基础,只有分数达到门禁条件时,代码才可以合入。
  • 审核机制,该模式包含代码检视和合并审核两个步骤,以通过人数为基础,只有检视和审核通过的人数达到门禁条件时,代码才可以合入。

    当您选择合入机制后,参考下表填写其余参数,且该配置对整个代码仓库生效。

    表1 设置合入条件、合入模式的参数表

    参数名称

    参数解释

    合入条件

    此参数非必填,共2个选项:

    • 评审问题全部解决才能合入。勾选后,如果评审意见被勾选为“这是一个需要被解决的问题”,则合入条件会提示“存在未解决的评审意见”“合入”按钮置灰;如果只是一个普通的评审意见,则不存在“已解决”开关,也不会被合入条件拦截。
    • 必须与CodeArts Req关联。包含如下3个子选项:
      1. 只能关联一个单号。勾选后,一个MR只能关联一个单号。
      2. 所有E2E单号校验必须通过。勾选后,被关联的所有E2E单号校验必须通过。
      3. 选择分支配置合并请求策略。可添加多个分支配置合并请求策略,支持手动输入通配符匹配,按回车确认,如:*-stable或production/*。

    MR设置

    该参数非必填。包含如下选项:

    • 禁止合入自己创建的合并请求。勾选后,您在查看自己创建的MR时,“合入”按钮置灰,自己无法合入,需要找其他有合入权限的人合入。
    • 禁止审核自己创建的合并请求。
    • 禁止检视自己创建的合并请求。
    • 允许仓库管理员及项目经理强制合入。
    • 允许合并请求合并或关闭后继续做代码检视和评论。
    • 是否将自动合并的MR状态标记为关闭状态。如果A MR中的包含在A MR中所有Commits,那么当A合并后,则B MR会自动合并。默认B MR会标记为合并状态,可以通过该选项控制将B MR标记为关闭状态。
    • 不能重新打开一个已经关闭的合并请求。默认打开,您可以根据自己的需要打开或关闭。
    • 新建合并请求,默认开启合并后删除源分支。
    • 禁止Squash合并(合入MR时禁止Squash合并)。
    • 新建合并请求,默认开启Squash合并。

    合并模式

    此参数必填,共3个选项:

    • 通过Merge Commit合并。勾选后,每次合并操作都会产生一个merge commit点,只要没有检测到冲突就能够执行合并操作。即不管基线点是不是最新的点,无冲突就可以合并。
      • Squash合并不产生Merge节点:勾选后,squash合并不会产生merge节点。
      • 使用MR合入者生成Merge Commit :勾选后,可用于记录Commit信息。

        使用MR创建者生成Merge Commit: 勾选后,可用于记录Commit信息。

    • 通过Merge commit 合并(记录半线性历史)。勾选后,每次合并操作会记录一个merge commit提交,但是与“通过Merge commit合并”不同,必须基于目标分支最新的commit提交点进行提交,否则会提示开发者进行rebase操作。这种合并模式下可以非常确定一点,如果merge request能够正确构建,合并完成后目标分支也能够正确构建。
    • Fast-forward 合并。勾选后,每次合并操作不会记录一个merge commit提交,且必须基于目标分支最新的commit提交点进行提交,否则会提示开发者进行rebase操作。

设置分支策略

如果您在上述选择“合入机制”“审核机制”,并且想为某个分支配置合并策略,您可以进入要配置的代码仓库首页,选择“设置” > “策略设置” > “合并请求”,单击“新建分支策略”,参考下表填写参数。

单击“新建分支策略”按钮,可以为指定分支或该仓库下的全部分支设置合入策略。

表2 新建分支策略参数说明

参数

说明

分支

该参数必填。下拉框选择您想要设置的分支,支持选择全部分支。

最小检视人数

该参数必填。默认为0,表示无需检视人检视通过,也可通过检视门禁。

最小审核人数

该参数必填。默认为0,表示无需审核人审核通过,也可通过审核门禁。

重置审核门禁

该参数非必填。默认勾选,表示当重新推送代码到MR的源分支时,将MR审核门禁重置。

重置检视门禁

该参数非必填。默认勾选,表示当重新推送代码到MR的源分支时,将MR检视门禁重置。

仅能从以下审核人/检视人中追加审核人/检视人

该参数非必填。勾选后,可配置“追加审核人”名单与“追加检视人”名单,当您想在“审核人”“检视人”的必选名单外追加成员时,只允许从“追加审核人”名单与“追加检视人”名单中追加成员。

开启流水线门禁

该参数非必填。勾选后,合并前需要满足流水线门禁都通过的条件,将CI融入代码开发流程。

合并人

该参数非必填。可配置必选合并人名单,在新建合并请求时,该名单将自动同步至合并请求中。

审核人

该参数非必填。可配置必选审核人名单,在新建合并请求时,该名单将自动同步至合并请求中。

检视人

该参数非必填。可配置必选检视人名单,在新建合并请求时,该名单将自动同步至合并请求中。

分支策略优先级示例如下:

  • 假设在仓库下有A策略与B策略,它们配置的分支相同,则系统默认使用最新创建的分支策略。
  • 假设在仓库下有A策略与B策略,A策略配置的分支为a分支与b分支,B策略配置的分支为a分支,在发起目标分支为a分支的合并请求时,系统默认使用B策略。

在审核机制下未设置分支策略,则在发起合并请求时使用默认分支策略,该分支策略支持编辑、查看但不可删除,策略配置如下:

  • 分支:*,默认全部分支且不可修改。
  • 最小检视人数:默认为 0。
  • 最小审核人数:默认为 0。
  • 重置审核门禁:默认勾选。
  • 重置检视门禁:默认勾选。
  • 仅能从以下审核/检视人中追加审核人/检视人:默认不勾选。
  • 开启流水线门禁:默认不勾选。
  • 合并人:默认为空。
  • 审核人:默认为空。
  • 检视人:默认为空。
    必选名单举例:
    • 最小审核人数为2人,如果必选审核人名单为空,追加审核人名单2人均审核通过,审核门禁通过。
    • 最小审核人数为2人,如果必选审核人名单非空,则该名单内至少一人审核通过,审核门禁才可通过。