branch-merge-cli
v0.5.1
Published
旨在提高处理反向合并流程的效率,通过批量执行一系列步骤,简化反向合并过程。
Maintainers
Readme
branch-merge-cli
什么是 branch-merge-cli?
旨在提高处理反向合并流程的效率,通过批量执行一系列步骤,简化反向合并过程。
做什么
- 自动创建修复分支: 根据指定的发布版本(release-xxx)或主分支(master),自动批量创建本地修复分支。
- 批量进行 cherry-pick,基于研发人员提供的修复 commit-id 或者 fix-branch,应用到所有修复分支上。
- 自动生成 Merge Request(MR): 并自动关联修复分支和目标版本,指派给指定的审核人员。
- 二次推送 push:当 MR 已经生成后,又有修复的 commit,可以通过 push 命令进行二次推送,无须重新创建 MR。
- 分支清理: 在MR被合并后,支持删除相关的本地和远程修复分支,以保持代码库的整洁性。
- MR 操作:支持通过
bm-cli mr对项目下所有处于 opened 状态的 MR(或指定 iid 的单个 / 多个 MR)执行 approve / merge / close。
不做什么
- 不能替代研发自动修复 bug
- 不能替代研发自动解决合并冲突
开始
安装
需要安装 node 环境,版本 >= 18
下载 branch-merge-cli
npm install -g branch-merge-cli或者本地调试
git clone <repository-url>
cd branch-merge-cli
npm install
npm link # 或使用 node bin/cli.js 直接运行在 git 全局忽略文件中增加 branch-merge-cli.config.js
git config --global core.excludesfile ~/.gitignore_global
echo "branch-merge-cli.config.js" >> ~/.gitignore_global前置依赖:glab
MR 相关能力(-m 创建 MR、mr 批量 approve/merge/close)委托给 glab(GitLab 官方 CLI)执行,认证由 glab 统一管理,无需再在配置文件里填写 token / 项目 ID。首次使用前安装并登录一次:
brew install glab # macOS;其他平台见 glab 官方文档
glab auth login --hostname <your-gitlab-host> # 自建实例填你的域名,如 git.example.comglab 会在当前 git 仓库目录内自动推断目标项目。
使用方式
- 打开终端
- 切换到本地目标仓库地址
- bm-cli init,生成本地配置文件 branch-merge-cli.config.js,更新配置文件中的属性(分支命名规则等;token / 项目 ID 已无需配置)
- bm-cli -b,批量创建本地分支
- bm-cli -c,批量 cherry-pick 到目标本地分支,有冲突请自行解决
- bm-cli -m,批量创建 MR
- bm-cli mr --approve,approve 当前项目在 GitLab 上的 opened MR
- bm-cli mr --merge,merge 当前项目在 GitLab 上的 opened MR
- bm-cli mr --close,close 当前项目在 GitLab 上的 opened MR
mr 命令可选传入 iid(逗号分隔)只操作指定 MR;省略则操作所有 opened MR:
bm-cli mr --approve # approve 所有 opened MR
bm-cli mr --close 1178 # 只 close !1178
bm-cli mr --approve 1178,1180 # 只 approve !1178 和 !1180参数说明
Usage: bm-cli [options] [command] |
| Commands | Description | |------------|-----------------| | init | 初始化配置文件 | | mr [iids] | 操作 GitLab 项目的 opened MR(approve/merge/close);传 iid(逗号分隔)只操作指定 MR,省略则操作所有 opened |
| options | Description |
|-----------|-----------------------------------------|
| -V | output the version number |
| -b | 按命名规则创建本地分支 |
| -c | cherry-pick 到目标本地分支 |
| -d [type] | 删除分支,type 可选,可以是 all(全部)或 remote(远程),默认为 local(本地) |
| -m | 创建远程 MR |
| -p | 推送到远程仓库 |
| -h | display help for command |
