[分享] Merge trains的使用

1.官方文档

merge trains:Merge trains | GitLab

merged result pipeline:Merged results pipelines | GitLab

2.理解merge trains

当开启了merged results pipeline之后,pipeline会好像在merge成功之后执行的,也就是说此时pipeline执行时会是加入了此次的变更的,相当于虚拟了一个分支,将merge的源分支和目标分支变更已经merge到一起了,但是实际上对于目标分支来说还没有完成merge,如果短时间内有多个commit merge到同一个分支,那么这个分支就发生了多次变更,如果只执行一个pipeline这些不同的变更就会相互影响,比如其中一个提交有错,就会导致所有merge 失败。

而merge trains就能解决这种短时间内多个变更merge到同一个分支的情况。在merge trains中每一个merge都会执行一个单独的pipeline,这些pipeline是并行执行的,互相不会干扰,且速度很快。

3.在项目中启用merge trains

在项目中依次选择:

  • Settings > General
  • 展开Merge requests
  • Merge method中确认勾选的是Merge commit
  • Merge options中选中Enable merged results pipelines,然后再勾选Enable merge trainss.
  • 点击 Save changes进行保存

4.使用merge trains

在启用了merge trains之后,在每个merge request中就会有选择使用merge trains还是直接merge的选项了。

在一个merge request中点击Start merge trains

当启动一个merge trains之后,在其它的merge request中就会出现Add to merge trains的选项,点击就可以加入当前的merge trains了,但是这里需要注意,如果启动merge trains的那个pipeline已经执行完了,此时进入其它merge request就只会出现Start merge trains的按钮就不会出现Add to merge trains的按钮了。所以merge trains中必须有正在执行的pipeline才能维持之后merge trains的存在。

1 个赞