# 使用命令行发起 Merge Request
工蜂支持在客户端使用Git push options指令,推送代码的同时可便捷发起合并请求,并支持多项 MR 参数设置:
step1: 将本地分支推送到工蜂,并同时创建合并请求
git push -o mr.create
step2: 成功创建 MR,并返回工蜂 MR 链接
remote: | View merge request for my-source-branch: |
remote: | http://git.tencent.com/my-group/my-project/merge_requests/1 |
# 版本要求
需保证客户端版本不低于 Git 2.10,推荐使用 2.18 及以上版本
- 客户端版本 2.18 及以上版本,可以使用 --push-option 或-o:
git push -o <push_option>
- 客户端版本 2.10 到 2.17 范围内,使用 --push-option:
git push --push-option=<push_option>
# 合并请求指令
| Git push options | 描述 |
|---|---|
mr.create | 发起 MR(目标分支默认为 default 分支) |
mr.skip | 跳过 MR 评审,直接 push 到目标分支(仅目标分支启用 Pre-Push 模式,且当前用户角色是分支的 master 才可用) |
mr.pre_push | 对于未启用 Pre-Push 模式的目标分支,通过传参的方式创建 Pre-Push 模式评审单 |
mr.target=<branch_name> | 指定目标分支 |
mr.title="<title>" | 设置 MR 标题 |
mr.description="<description>" | 添加 MR 描述信息,用文本\n表示换行 |
mr.assign="<user>" | 指定合并负责人 |
mr.reviewer="<user1>;<user2>" | 指定评审人(与项目默认评审人不一致时,将替换默认值) |
mr.necessary_reviewer="<user1>;<user2>" | 指定必要评审人(与默认评审人不一致时,将替换默认值) |
mr.id=<merge_request.iid> | 更新指定 MR(用于区分源分支上多个开启的 MR) |
注意:
1.\在 shell 命令行被双引号引用时有转义作用,所以"\\n"、"\n"和'\n'用于mr.description时都可表示换行;
2.工蜂服务端仅对mr.description做特殊处理才支持换行,其他的参数均与原生 push-option 保持一致,不支持换行;
# 用法说明
1. 合并请求 push options 指令将不会影响代码推送的成功与否
2. 支持串联使用多个-o(或--push-option)指令,一次性完成合并请求发起或相关参数设置
示例 1:发起一个目标分支为 test 的合并请求,并邀请 zhangsan 为评审人:
git push -o mr.create -o mr.target=test -o mr.reviewer="zhangsan"
示例 2:更新已发起合并请求的标题及描述:
git push -o mr.title="The title I want" -o mr.description="The description I want"
3. 以下情况必须指定目标分支(mr.target)才能成功发起 MR(mr.create):
- 当前推送分支(源分支)为默认分支
- 源分支上已存在一个打开中的 MR
4. 源分支上存在多个打开中的合并请求时,应使用 mr.id 更新指定的合并请求 MR
例如:MR1:dev -> master,MR2:dev -> test,需要更新 MR1 的评审人
git push -o mr.id=1 -o mr.reviewer="new_reviewer"