日常工作中经常遇到这种情况:
基于主干master拉出特性分支test
过段时间之后,master主干代码一直往前演进迭代,test上只有特性功能的代码修改,为适配耦合,test分支不做rebase master(即test上并没主干最新部分代码)
虽已创建MR,但此时test分支还未合入到master
本地下载主干最新代码+特性分支上的增量代码,来检验MR是否OK
应用场景:
- gitlab+Jenkins代码入库前自检
- 个人分支合并到主干分支MR事件自动触发
- 因为多个代码仓适配同一个Jenkins job,所以不用Jenkins 自身克隆代码插件将代码仓固定写死
- 只有一个pipeline来适配多个业务代码仓,检测到任一代码仓有MR事件,自动触发自检,需要克隆该代码仓目标分支+增量代码下来
以下代码就是在MR合入成功之前,将目标分支最新代码和要合入的增量代码一起克隆下来:
git clone ${git_url}
git checkout ${target_branch}
git fetch origin +refs/merge-requests/${MRID} /head:refs/remotes/origin/merge-requests/${MRID}
git merge refs/remotes/origin/merge-requests/${MRID}
参数解释:
#git_url:仓库URL(HTTPS格式)
#target_branch:目标分支
#MRID:提交merge之后生成的一个ID标记,他是唯一且递增的