关于 backport-pr-assistant
此技能用于指导将 CockroachDB 拉取请求回移到较旧的发布分支,并处理冲突及按需创建 PR。它结合 backport 命令行步骤、受支持版本选择规则和复杂冲突的升级处理建议。
主要功能
- 01将 PR 回移到发布分支
- 02选择受支持的发布目标
- 03解决冲突并继续回移
- 04仅按请求创建 PR
适用场景
- 01将修复回移到指定发布分支
- 02为批量回移筛选受支持版本
- 03处理 cherry-pick 过程中的冲突
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ cockroachdb/ cockroach --skill backport-pr-assistant安装后在 Claude Code 中输入/backport-pr-assistant确认已加载。
详细介绍
CockroachDB 回移助手
帮助用户将拉取请求回移到较早的发行分支,尤其是在需要解决冲突时。
Backport CLI 工具参考
始终传入 --no-browser,以防止 backport 工具打开浏览器
窗口。如果不识别 --no-browser,说明用户使用的是旧版本的
工具——运行 go install github.com/cockroachdb/backport@latest 升级,然后重试。
基本用法:
backport --no-browser <pull-request>... # Backport entire PR(s)
backport --no-browser <pr> -r <release> # Target specific release (e.g., -r 23.2)
backport --no-browser <pr> -b <branch> # Target specific branch (e.g., -b release-23.1.10-rc)
backport --no-browser <pr> -j "justification" # Add release justification
backport --no-browser <pr> -c <commit> -c <commit> # Cherry-pick specific commits only
backport --no-browser <pr> -f # Force operation
冲突解决:
backport --continue # Resume after resolving conflicts
backport --abort # Cancel in-progress backport
常见示例:
backport --no-browser 23437 # Simple backport
backport --no-browser 23437 -r 23.2 # To release-23.2 branch
backport --no-browser 23437 -j "test-only changes" # With justification
backport --no-browser 23437 -b release-23.1.10-rc # To specific release candidate branch
确定目标分支
如果用户指定了确切的发行分支,直接使用这些分支。如果用户 说“回移到所有分支”或“回移到所有受支持的发行版本”之类的话, 但没有列出具体版本,则通过获取 CockroachDB 发行支持政策页面来确定 哪些分支仍受支持:
https://www.cockroachlabs.com/docs/releases/release-support-policy
该页面包含两个表格:受支持的版本和不受支持的版本。 仅回移到维护支持结束日期尚未过去的版本——处于协助支持阶段的版本只接收关键安全 修复,不接收一般错误修复回移。跳过出现在 不受支持的版本表格中的任何版本(这些版本已 EOL)。注意创新版发行—— 它们的支持期限较短,且没有协助支持阶段,因此可能最近刚刚 EOL。
工作流
开始第一次回移前,先提示用户提供发行理由
(例如“修复可能导致数据丢失的错误”“仅涉及测试的更改”“安全补丁”)。
所有回移 PR 都使用相同的理由。通过 -j 将其传递给每次 backport
调用。
- 开始回移:针对目标分支运行
backport --no-browser <pr> -r <release> -j "<justification>" - 发生冲突时:工具会停止并列出冲突文件
- 分析冲突:阅读冲突文件,了解分支之间的差异
- 解决冲突:编辑文件以解决冲突,然后对已解决的文件运行
git add - 继续:运行
backport --continue以恢复操作 - 如果再次出现冲突,则重复上述步骤
- 完成:回移工具会挑拣提交并将分支推送到用户的 fork
- 创建 PR:只有在用户明确提出要求时才创建 PR。默认情况下,回移工具推送分支后即停止。如果用户确实要求创建 PR,请使用
gh pr create(参见下文“创建回移 PR”)
创建回移 PR
只有在用户明确提出要求时才创建 PR。使用 gh pr create,并遵循
以下约定:
PR 标题格式:
release-XX.X: <original PR title>
标题由发行分支前缀、冒号、空格以及原始 PR 标题原样组成。 例如,若原始 PR 标题为“keys: handle case where keys targeted by GC request straddle header”,目标分支为 release-24.3, 则回移 PR 标题应为:
release-24.3: keys: handle case where keys targeted by GC request straddle header
PR 正文格式:
遵循回移工具使用的标准正文格式:
Backport N/N commits from #<original-pr> on behalf of @<user>.
----
<original PR commit messages or body>
----
Release justification: <justification>
gh pr create 调用示例:
gh pr create \
--repo cockroachdb/cockroach \
--base release-24.3 \
--head <user>:backport24.3-<pr-number> \
--title "release-24.3: <original title>" \
--body "<body following the format above>"
冲突解决指南
可以直接解决的简单冲突:
- 导入语句冲突
- 简单的变量名更改
- 基本格式差异
- 显而易见的轻微 API 签名更改
复杂冲突——向用户寻求指导:
- 涉及重大逻辑更改的冲突
- 目标分支中不存在的依赖项
- 需要大量修改的 API 更改
- 多个存在相互依赖更改的冲突文件
- 可能不适合目标分支的更改
解决冲突时
- 说明冲突内容——展示相关代码段
- 说明原因——指出导致冲突的分支间差异
- 提出解决方案——如果情况复杂,则寻求指导
- 解决后:运行
git add <files>,然后运行backport --continue