关于 backportcheck
backportcheck 根据版本和严重程度,按固定规则判断哪些受支持的旧版本分支应接收修复。它仅依据输入生成可审查的计划,不访问代码仓库或网络。
主要功能
- 01按支持状态和版本筛选分支
- 02根据严重程度决定回移操作
- 03说明分支被排除的原因
- 04按版本和分支名称排序计划
- 05校验版本及分支输入
适用场景
- 01判断哪些旧版本需要修复
- 02检查版本分支被排除的原因
- 03为发布团队制定回移计划
MCP 相关
MCP 服务提供 `check_backport`,接收修复版本、严重程度、分支及可选的缺陷引入版本,并返回回移计划和跳过的分支。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| branches | array | 是 | 发布分支:{name, version, supported} |
| severity | enum | 是 | 修复的严重程度critical | major | minor |
| fix_version | string | 是 | 修复合入的版本,格式为 x.y.z |
| introduced_in | string | 否 | 引入此 bug 的版本,格式为 x.y.z(可选) |
详细介绍
backportcheck
修复先进入最新版本线,随后便会出现更棘手的问题:仍在使用的旧版发布分支中,哪些也需要这个修复?凭直觉判断,要么会漏掉一个暗中受影响的分支,要么会把修复回移到所有分支,给发布团队增加负担。backportcheck 将这一决策转化为固定且可审计的流程:提供修复,它就会返回计划。
首先,筛选出真正符合条件的候选分支。分支必须同时满足以下三项才符合条件:仍受支持;版本严格早于修复进入的版本;并且,如果你指定了引入 bug 的版本,该分支的版本必须不早于该版本,因为早于 bug 引入时间的分支不可能包含这个 bug。版本采用普通的 x.y.z 数字格式,按组件逐个进行数值比较,因此 1.10.0 会正确排在 1.9.0 之后。
每个未通过筛选的分支仍会出现在报告中,并且只会有一个原因。原因按固定顺序检查,确保报告不会归咎于错误原因:不受支持的分支标记为 unsupported,即使它也过新;其次是 not older than fix version;最后是 predates bug introduction。
然后,根据严重程度为每个候选分支指定操作:
critical— 所有候选分支都标记为backport。关键修复会回移到所有符合条件的分支。major— 与修复属于同一主版本线的候选分支标记为backport;属于更早主版本线的候选分支标记为consider。minor— 与修复属于同一主版本线的候选分支标记为consider;属于更早主版本线的候选分支标记为skip。
只有至少一个候选分支的操作为 backport 时,needs_backport 才为 true。计划和跳过列表都会按版本降序排序;版本相同时,按分支名称升序排列,因此最新的分支(通常也是最紧急的分支)会排在前面。格式错误的输入会触发验证错误,并指出出错路径:版本不是 x.y.z、严重程度不属于枚举值,或分支条目缺少名称、版本或 supported 标记。计算完全纯本地:不会联网,不读取或访问配置和代码仓库;backportcheck 只负责制定计划。
命令行
npx @reneturcios/backportcheck check --input args.json
npx @reneturcios/backportcheck --version
args.json 包含完整的参数对象:
{
"fix_version": "3.2.0",
"severity": "major",
"introduced_in": "2.4.0",
"branches": [
{ "name": "release-3.1", "version": "3.1.4", "supported": true },
{ "name": "release-3.0", "version": "3.0.9", "supported": true },
{ "name": "release-2.5", "version": "2.5.1", "supported": true },
{ "name": "release-2.3", "version": "2.3.8", "supported": true },
{ "name": "release-1.9", "version": "1.9.0", "supported": false }
]
}
结果以 JSON 格式输出:
{
"needs_backport": true,
"fix_version": "3.2.0",
"severity": "major",
"plan": [
{ "branch": "release-3.1", "version": "3.1.4", "action": "backport" },
{ "branch": "release-3.0", "version": "3.0.9", "action": "backport" },
{ "branch": "release-2.5", "version": "2.5.1", "action": "consider" }
],
"skipped_branches": [
{ "branch": "release-2.3", "version": "2.3.8", "reason": "predates bug introduction" },
{ "branch": "release-1.9", "version": "1.9.0", "reason": "unsupported" }
]
}
退出代码:成功时为 0,运行时错误时为 1(包括输入文件无法读取或无效,以及输入无效),用法错误时为 2。
MCP 服务
npx -y @reneturcios/backportcheck mcp
MCP 客户端配置:
{
"mcpServers": {
"backportcheck": {
"command": "npx",
"args": ["-y", "@reneturcios/backportcheck", "mcp"]
}
}
}
工具
-
check_backport— 判断修复是否需要回移,以及应回移到哪些发布分支。fix_version(string,必填)— 修复进入的版本,格式为x.y.zseverity(string,必填)— 以下值之一:critical、major、minorbranches(array,必填,不能为空)— 发布分支,每项为{name, version, supported},其中name是非空字符串,version的格式为x.y.z,supported为布尔值introduced_in(string,可选)— 引入 bug 的版本,格式为x.y.z
返回
{needs_backport, fix_version, severity, plan, skipped_branches}。
Docker
docker run -i ghcr.io/cloudcorprecords/backportcheck
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/backportcheck check --input /w/args.json
开发
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
许可证
MIT — 版权所有 (c) 2026 Rene Turcios
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。