合并请求管理
代码托管服务支持多分支开发,并为分支合并建立了可配置的审核规则,当一个开发者发起一次合并请求时,可选择部分仓库成员参与到代码审视中,以确保合并代码的正确性。
合并请求列表
在仓库详情的“合并请求”页签中,可以看到“合并请求列表”页面。
- 可以切换、查看不同状态的合并请求。
- 通过单击请求标题可以进入合并请求详情页。
- 可以查看请求的简要信息,包括:涉及的分支、创建时间、创建人。
- 提供了多条件维度的查找功能。
- 在左上方有新建合并请求入口。
开启中:代表该请求已进入检视或合并阶段,分支未合并。
已合并:代表该请求已经完成审核,并完成分支合并的动作。
已关闭:代表该请求被取消,分支未产生实际合并。
所有:显示所有状态的合并请求。
新建合并请求
假设管理员已经设置好了分支合并规则,当您在开发分支上完成了功能开发,并需要发起合并请求时,请按照以下流程操作。
- 进入目标仓库详情页。
- 切换到“合并请求”页签。
- 单击“新建”按钮,选择要合并的分支。
如上图在本示例中将刚完成开发任务的Dev分支合并到master分支中。
支持源分支选择Fork仓库的分支。
- 单击“下一步”按钮,此时系统会检测两条分支是否有差异。
- 如果分支没有差异,系统会做出提示,且不能新建合并请求。
- 如果分支存在差异,则进入“新建合并请求”页面。
在“新建合并请求”页面的下方可以看到两条分支的文件差异对比详情、要合并分支的提交记录。
- 根据下表参数说明,填写页面信息。
表1 参数说明 参数
说明
更改分支
单击可返回上一步更改需要合并的分支。
标题
输入合并请求的标题。
描述
会结合分支合并情况与要合并分支的提交(commit)备注生成默认值,您可以根据项目情况进行修改。
说明:该输入框采用markdown格式,字符数限制在5000字符以内,即将超出上限时,使用顶部的操作按钮会按照markdown的语法替换内容。
关联工作项
可选择将合并动作关联到某个工作项,以起到自动改变工作项状态的作用。
合并人
在合并请求满足合入要求时,一般是所有审核人审核通过、所有问题都被解决(可设置不解决也能合并),合并人有权限执行合并操作(单击按钮)、也有权限关闭合并请求。
检视人
被指定参与合并分支检视,可以提出问题给发起人。
审核人
被指定参与合并分支评审,可以给出审核意见(审核通过、拒绝),也可以提出问题给发起人。
合并后删除源分支
可选择是否合并后删除源分支,初始会带入合并请求设置中预设状态。
Squash合并
开启Squash合并,可使基本分支的历史记录保持干净,并带有有意义的提交消息,而且在必要时可以更简单地恢复,详情请参考Squash合并。
- 单击“新建合并请求”按钮,可以完成合并请求的提交,页面会跳转到该“合并请求详情页”。
在合并请求详情中,可以看到合入条件达成的状态、合并人、检视人、审核人、所关联的工作项等信息,同时可以查看可留下评审意见,可标注评审意见为待解决状态,并可看到该合并涉及的所有动态。
- “提交记录”:可以看到源分支的相关提交记录。
- “文件变更”:可以看到此次合并的变更内容,并可具体筛选出新增、修改、删除、重命名等变更种类。
- “流水线”:可以看到门禁流水线的信息。
- 当发起分支合并请求时,其相关人员(审核人、合并人)会收到提醒邮件。审核人不能为合并请求创建者。
- 单个文件差异超过5000行、差异文件个数超过100个时,建议使用客户端合并后,推送到代码托管。
对合并请求进行检视、审核与合入
当检视人、审核人、合并人收到系统的分支合并请求通知邮件时,请按以下步骤进行操作。
- 进入目标仓库详情页。
- 切换到“合并请求”页签,单击目标合并请求名称,查看详情。
- 对目标合并请求进行检视。
检视人与审核人均可对合并请求进行检视并给予检视意见,如果无修改意见,检视人可单击“检视通过”完成检视。
- 对目标合并请求进行审核。
审核人可通过单击“拒绝”或“通过”对合并请求进行审核。
- 通过合并请求门禁。
表2 合入条件说明 合入条件
说明
代码合并冲突
当源分支代码与目标分支代码产生合并冲突时,需要先解决冲突才可进行下一步操作,解决代码冲突可参考解决合并请求的代码冲突。
评审意见门禁
当发起人解决所有检视人或审核人的评审意见后,门禁显示通过,更多门禁详情请参考评审意见门禁详解。
流水线门禁
当最新commit或者预合并commit拉起并成功执行流水线时,门禁显示通过,更多门禁详情请参考流水线门禁详解。
E2E单号未关联
当合并请求关联工作项后,门禁显示通过,更多门禁详情请参考E2E单号关联门禁详解。
检视门禁
当已检视的检视人数达到最小检视人数时,门禁显示通过,更多门禁详情请参考检视门禁详解。
审核门禁
当已审核的审核人数达到最小审核人数时,门禁显示通过,更多门禁详情请参考审核门禁详解。
- 对目标合并请求进行合入。
当发起人通过以上合入条件后,合并人可单击“合入”按钮进行合入,反之,合并人可单击“关闭”将请求关闭。
Squash合并
Squash合并是将合并请求的所有变更提交信息合并为一个,并保留干净的历史记录。当用户在处理功能分支只关注当前提交进度,而不关注提交信息时,可使用squash merge。
当勾选Squash合并,可将源分支的多个连续变更记录合并为一个提交记录(Squash提交信息),提交到目标分支。
- 如果合并请求中的变更记录只有一个提交记录,则勾选Squash合并后,目标分支中的提交记录为源分支的提交记录。
- 如果合并请求中的变更记录有多个提交记录,则勾选Squash合并后,目标分支中的提交记录为Squash提交信息。
为了您更深入了解此功能,下面进行实际操作:
- 新建仓库。
仓库名称命名为“repo”。
- 新建分支。
分支名称命名为“Dev”。
- 新建提交。
将“新建一个文件”作为一次Commit提交。
Dev分支:新建两个文件并分别命名为“功能一”及“功能二”。
- 查看开启“Squash 合并”前的效果。
切换到“Dev分支”下的“代码 > 提交 > 提交记录”界面,查看提交信息。
- 新建并合入合并请求。
- 源分支为Dev,目标分支为master,修改以下修改即可新建合并请求。
Dev分支:合并请求标题命名为“代码合入”,勾选“Squash 合并”并“修改squash提交信息”为“新功能开发”。
- 完成对合并请求进行检视、审核后,即可合入请求。
- 源分支为Dev,目标分支为master,修改以下修改即可新建合并请求。
- 查看开启“Squash 合并”后的效果。
请求合入成功后,切换到“master分支”下的“代码 > 提交 > 提交记录”界面,与步骤4对比,提交信息已被合并。