更新时间:2025-03-05 gmt 08:00
使用mr预合并-九游平台
mr预合并概述
mr预合并指的是在repo生成一个临时合并节点,mr创建后且代码还没有合入,用户可通过自定义webhook、流水线等下载插件的脚本,下载repo预合并后的代码用于代码构建等操作。
mr预合并优势
当一个合并请求需要拉起几十或上百台服务器的构建,本地客户端做预合并可能会与服务端产生的结果不一致,导致构建代码获取不够准确、构建结果不准确等问题。通过开启“mr预合并”,可以解决该实时性问题,并且构建脚本命令相比本地预合并脚本更简单,开发人员更容易上手。
约束限制
- 需要开启“mr预合并”。
- 用户需要有“设置”权限。
使用示例
下述示例展示了“开启mr预合并”和“未开启mr预合并”的脚本,可见“开启mr预合并”的脚本更简洁、高效。
- “开启mr预合并”,当mr创建后,则服务端会帮助用户生成一个临时合并节点,进而用户可以直接下载已临时合并的代码。具体操作步骤如下:
- 初始化本地代码仓,其中repo_url为合并请求仓库地址。
git init git remote add origin ${repo_url}
- 拉取服务端临时合并节点到本地分支。如下图所示,合并请求标题下的“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 - 检出分支,即可获得预合并后代码
git checkout ${repo_mr_iid}/merge
“未开启mr预合并”,用户需要在客户端分别下载合并请求源分支、合并请求目标分支的代码,并在构建执行机自行完成合并动作。具体操作步骤如下:
- 初始化本地代码仓,其中repo_url为合并请求仓库地址。
git init git remote add origin ${repo_url}
- 拉取并检出合并请求目标分支,其中,“repotargetbranch”为合并请求目标分支。
git fetch origin refs/heads/${repotargetbranch}:refs/remotes/origin/${repotargetbranch} git checkout ${repotargetbranch}
- 拉取合并请求源分支到本地分支,如下图所示,合并请求标题下的“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 - 本地执行合并,即可获得预合并后代码。
git merge refs/remotes/origin/${repo_mr_iid}/head --no-edit
父主题:
相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨