更新时间:2025-03-05 gmt 08:00

使用mr预合并-九游平台

mr预合并概述

mr预合并指的是在repo生成一个临时合并节点,mr创建后且代码还没有合入,用户可通过自定义webhook、流水线等下载插件的脚本,下载repo预合并后的代码用于代码构建等操作。

mr预合并优势

当一个合并请求需要拉起几十或上百台服务器的构建,本地客户端做预合并可能会与服务端产生的结果不一致,导致构建代码获取不够准确、构建结果不准确等问题。通过开启“mr预合并”,可以解决该实时性问题,并且构建脚本命令相比本地预合并脚本更简单,开发人员更容易上手。

约束限制

  • 需要开启“mr预合并”
  • 用户需要有“设置”权限。

使用示例

下述示例展示了“开启mr预合并”“未开启mr预合并”的脚本,可见“开启mr预合并”的脚本更简洁、高效。

  • “开启mr预合并”,当mr创建后,则服务端会帮助用户生成一个临时合并节点,进而用户可以直接下载已临时合并的代码。具体操作步骤如下:
  1. 初始化本地代码仓,其中repo_url为合并请求仓库地址。
    git init  
    git remote add origin ${repo_url}
  2. 拉取服务端临时合并节点到本地分支。如下图所示,合并请求标题下的“10”即为“repo_mr_iid”“merge-requests/${repo_mr_iid}/merge”表示临时合并节点,“${repo_mr_iid}/merge”表示本地分支。
    git fetch origin  refs/merge-requests/${repo_mr_iid}/merge:refs/remotes/origin/${repo_mr_iid}/merge
    图1 合并请求iid
  3. 检出分支,即可获得预合并后代码
    git checkout ${repo_mr_iid}/merge

“未开启mr预合并”,用户需要在客户端分别下载合并请求源分支、合并请求目标分支的代码,并在构建执行机自行完成合并动作。具体操作步骤如下:

  1. 初始化本地代码仓,其中repo_url为合并请求仓库地址。
    git init  
    git remote add origin ${repo_url}
  2. 拉取并检出合并请求目标分支,其中,“repotargetbranch”为合并请求目标分支。
    git fetch origin  refs/heads/${repotargetbranch}:refs/remotes/origin/${repotargetbranch}
    git checkout ${repotargetbranch}
  3. 拉取合并请求源分支到本地分支,如下图所示,合并请求标题下的“10”即为“repo_mr_iid”“merge-requests/${repo_mr_iid}/head”表示合并请求源分支,“${repo_mr_iid}/head”表示本地分支。
    git fetch origin  refs/merge-requests/${repo_mr_iid}/head:refs/remotes/origin/${repo_mr_iid}/head
    图2 合并请求iid
  4. 本地执行合并,即可获得预合并后代码。
    git merge refs/remotes/origin/${repo_mr_iid}/head --no-edit

相关文档

网站地图