mcpField
B
backportcheck

backportcheck

本地服务
github.com/CloudCorpRecords版本控制01 周前更新

关于 backportcheck

backportcheck 根据版本和严重程度,按固定规则判断哪些受支持的旧版本分支应接收修复。它仅依据输入生成可审查的计划,不访问代码仓库或网络。

主要功能

  1. 01按支持状态和版本筛选分支
  2. 02根据严重程度决定回移操作
  3. 03说明分支被排除的原因
  4. 04按版本和分支名称排序计划
  5. 05校验版本及分支输入

适用场景

  1. 01判断哪些旧版本需要修复
  2. 02检查版本分支被排除的原因
  3. 03为发布团队制定回移计划

MCP 相关

MCP 服务提供 `check_backport`,接收修复版本、严重程度、分支及可选的缺陷引入版本,并返回回移计划和跳过的分支。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-backportcheck": {
"command": "npx",
"args": [
"-y",
"@reneturcios/backportcheck"
]
}
}
}
启动命令npx -y @reneturcios/backportcheck

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/backportcheck0.1.0
ocighcr.io/cloudcorprecords/backportcheck:0.1.0

工具

1

收录的工具列表 · 更新于 1 周前

参数类型必填说明
branchesarray是发布分支:{name, version, supported}
severityenum是修复的严重程度critical | major | minor
fix_versionstring是修复合入的版本,格式为 x.y.z
introduced_instring否引入此 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.z
    • severity(string,必填)— 以下值之一:critical、major、minor
    • branches(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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。