
# 设置项目级合并请求规则
#### 什么是合并请求规则
合并请求规则是指代码合入条件、合入模式的配置，且项目级的合入请求规则可继承到代码仓库、代码组。
在配置合并请求规则前，用户请先查看[约束限制]，满足配置权限的用户请根据[配置合并请求规则]进行配置。
 #### 约束限制
表1设置合并请求规则的约束限制 
| 限制类别 | 具体限制                                                                                                                                          |
|:---|:---|
| 权限限制 | 当用户角色为"项目经理"或者"项目管理员"，可以设置项目级合并请求规则，请参考[配置项目级的Repo权限](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0087.html)进行配置。 |
   
 #### 配置合并请求规则
用户可以勾选"开启强制继承"，自动继承并使用项目下设置且不支持更改。
用户也可以进入要配置的项目首页，在上方导航栏选择"设置" \> "策略设置" \> "合并请求"。请按照下列步骤新建合并请求规则：
1. 选择"合入机制"。合并请求有两种机制，打分机制和审核机制，两种模式区别如下：
   
   - 打分机制，该模式仅包含代码检视，以打分为基础，只有分数达到门禁条件时，代码才可以合入，分数可设置范围为0-5。
   
   - 审核机制，该模式包含代码检视和合并审核两个步骤，以通过人数为基础，只有检视和审核通过的人数达到门禁条件时，代码才可以合入。 ![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002243888146.png "点击放大")
     
   
   
   
   
2. 选择合入机制后，参考[下表]填写其余参数，且该配置对整个代码仓库生效。
   
    表2设置合入条件、合并请求设置、合并模式的参数表 
   | 参数名称   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 取值样例                                                                                                                                                                           |
   |:---|:---|:---|
   | 合入条件   | 此参数非必填，共2个选项： - 评审问题全部解决才能合入。勾选后，如果评审意见被勾选为"这是一个需要被解决的问题"，则合入条件会提示"存在未解决的评审意见"且"合入"按钮置灰；如果只是一个普通的评审意见，则不存在"已解决"开关，也不会被合入条件拦截。  - 必须与CodeArts Req关联。包含如下3个子选项： 1. 只能关联一个单号。勾选后，一个合并请求只能关联一个单号。  2. 所有E2E单号校验必须通过。勾选后，被关联的所有E2E单号校验必须通过。  3. 选择分支配置合并请求策略。可添加多个分支配置合并请求策略，支持手动输入通配符匹配，按回车确认，如：\*-stable或production/\*。   注意： 当用户购买套餐为"专业版"套餐，才会有"是否将星级评价作为合入门禁"选项。   - 是否将星级评价作为合入门禁 如果勾选星级评价作为合入门禁，至少有一位具有合并权限的角色成员进行评价。   - 允许参与星级评价角色 支持从下拉框中选择单个或批量选择多个具有合并权限的角色参与评价。    | "\*-stable"表示匹配以"-stable"结尾的E2E单号。 ![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002598535461.png "点击放大") |
   | 合并请求设置 | 该参数非必填。包含如下选项： - 禁止合入自己创建的合并请求。勾选后，用户在查看自己创建的合并请求时，"合入"按钮置灰，自己无法合入，需要找其他有合入权限的人合入。  - 禁止审核自己创建的合并请求。  - 禁止检视自己创建的合并请求。  - 允许仓库管理员及项目经理强制合入。  - 允许合并请求合并或关闭后继续做代码检视和评论。  - 是否将自动合并的合并请求状态标记为关闭状态。如果B合并请求中的所有Commits包含在A合并请求，那么当A合并后，则B合并请求会自动合并。默认B合并请求会标记为合并状态，可以通过该选项控制将B合并请求标记为关闭状态。  - 不能重新打开一个已经关闭的合并请求。默认关闭，用户可以根据自己的需要打开或关闭。  - 新建合并请求，默认开启合并后删除源分支。  - 禁止Squash合并（合入合并请求时禁止Squash合并）。  - 新建合并请求，默认开启Squash合并。     |  ![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002477465202.png "点击放大")                                                                    |
   | 合并模式   | 共3个选项： - 通过Merge Commit合并。勾选后，每次合并操作都会产生一个merge commit点，只要没有检测到冲突就能够执行合并操作。即不管基线点是不是最新的点，无冲突就可以合并。 - Squash合并不产生Merge节点：勾选后，squash合并不会产生merge节点。  - 使用合并请求合入者生成Merge Commit：勾选后，可用于记录Commit信息。 使用合并请求创建者生成Merge Commit： 勾选后，可用于记录Commit信息。     - 通过Merge commit合并记录（半线性历史）。勾选后，每次合并操作会记录一个merge commit提交，但是与"通过Merge commit合并"不同，必须基于目标分支最新的commit提交点进行提交，否则会提示开发者进行rebase操作。这种合并模式下可以非常确定一点，如果merge request能够正确构建，合并完成后目标分支也能够正确构建。  - Fast-forward 合并。勾选后，每次合并操作不会记录一个merge commit提交，且必须基于目标分支最新的commit提交点进行提交，否则会提示开发者进行rebase操作。                                                                                                                                                                                                  | ![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002278870517.png "点击放大")                                |
      
   
   
3. 参数填写完成后，单击"提交"，完成合并请求规则的配置。
如果用户的"合入机制"选择为"审核机制"，并且想为指定分支或该仓库下的全部分支设置合入策略，用户可以参考[设置分支策略]进行配置。
 #### 设置分支策略
进入要配置的代码仓库首页，选择"设置" \> "策略设置" \> "合并请求"，单击"新建分支策略"，参考[表3]填写参数。
 表3新建分支策略参数说明 
| 参数                     | 说明                                                                                                                       |
|:---|:---|
| 分支                     | 下拉框选择用户想要设置的分支，支持选择全部分支。                                                                                                 |
| 最小检视人数                 | 默认为2。 当最小检视人数为0时，表示无需检视人检视通过，也可通过检视门禁。                                               |
| 最小审核人数                 | 默认为2。 当最小审核人数为0时，表示无需审核人审核通过，也可通过审核门禁。                                              |
| 重置入库审核门禁               | 该参数非必填。默认勾选，表示当重新推送代码到合并请求的源分支时，将合并请求审核门禁重置。                                                                             |
| 重置入库检视门禁               | 该参数非必填。默认勾选，表示当重新推送代码到合并请求的源分支时，将合并请求检视门禁重置。                                                                             |
| 仅能从以下审核人/检视人中追加审核人/检视人 | 该参数非必填。勾选后，可配置**"追加审核人"** 名单与**"追加检视人"** 名单，当用户想在**"审核人"** 与**"检视人"** 的必选名单外追加成员时，只允许从**"追加审核人"** 名单与**"追加检视人"**名单中追加成员。 |
| 开启流水线门禁                | 该参数非必填。勾选后，合并前需要满足流水线门禁都通过的条件，将CI融入代码开发流程。                                                                               |
| 合并人                    | 该参数非必填。可配置**必选合并人名单**，在新建合并请求时，该名单将自动同步至合并请求中。                                                                           |
| 审核人                    | 该参数非必填。可配置**必选审核人名单**，在新建合并请求时，该名单将自动同步至合并请求中。                                                                           |
| 检视人                    | 该参数非必填。可配置**必选检视人名单**，在新建合并请求时，该名单将自动同步至合并请求中。                                                                           |
   
#### 相关文档
- 分支策略优先级示例如下：
  - 仓库下的同一分支有A策略与B策略，系统默认使用最新创建的分支策略。
  
  - 在仓库下有A策略与B策略，A策略配置的分支为a分支与b分支，B策略配置的分支为a分支，在发起目标分支为a分支的合并请求时，系统默认使用B策略。
   
- **首次配置分支合并人、审核人、检视人后，后续新建合并请求会自动从浏览器缓存中加载该数据，如果合并人、审核人、检视人用户名称被修改且仓库权限被移除，"新建合并请求"页面会显示被修改后的用户"无权限"，移除无权限的用户即可，更新缓存数据且后续新建合并请求不会出现该用户。**
  ![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002420281738.png "点击放大")
  
 
