GitLab 合并列车是什么
GitLab 合并列车(merge trains)在目标分支要求快进合并且启用后,把多个 MR 按顺序排队:每个 MR 都与「前一个结果的合并结果」一起重新验证,成功即入队依次合入,减少「前一个合并导致后一个失败」的互相等待。它是 CI 原生的「排队合并」方案:队列中的 MR 只有以队列前序结果为底重跑通过后,才真正落到目标分支;依赖合并结果流水线(merged results pipelines)机制。
基本信息
| 前置 | 合并方法设为 Fast-forward merge,并启用 Merge trains |
|---|---|
| 依赖 | 必须先启用合并结果流水线 |
| 行为 | 每个 MR 按队列顺序验证后依次合入 |
| 代价 | 队列内重跑使流水线总时长叠加,慢流水线受益更明显 |
| 适用 | 主干频繁合入、流水线较慢的团队 |
典型使用场景
- 高频合入的主干:多个 MR 同时就绪时按序自动合入。
- 慢流水线团队:把等待前置合并的时间变成队列内验证。
- 发布冲刺:截止时间前集中入车,减少互相拖累。
- 减少写冲突:按序组合验证,失败者退出不影响他人。
- 规范化合入:所有人走同一队列,杜绝个别人绕过验证直推。
配置要点
配置要点
Settings → Merge requests:
- Merge method:Fast-forward merge
- Enable merged results pipelines
- Enable merge trains
# 队列中的 MR 会显示所属列车与位置概念对照
| 概念 | 作用 | 关系 |
|---|---|---|
| 快进合并 | 保证线性历史 | 列车的前置条件 |
| 合并结果流水线 | 用组合结果跑验证 | 列车的依赖 |
| 合并列车 | 队列化依次验证合入 | 本体机制 |
| 队列失败 | 失败者移出并重排队列 | 其余 MR 继续推进 |
适合主干频繁合入且流水线较慢的团队;流水线很快时收益有限,反而增加配置复杂度;上线前先在小项目试点观察队列长度。