mcpField
B
backport-pr-assistant

backport-pr-assistant

github.com/cockroachdb开发32.6k78 次安装5 周前更新
代码仓库

关于 backport-pr-assistant

此技能用于指导将 CockroachDB 拉取请求回移到较旧的发布分支,并处理冲突及按需创建 PR。它结合 backport 命令行步骤、受支持版本选择规则和复杂冲突的升级处理建议。

主要功能

  1. 01将 PR 回移到发布分支
  2. 02选择受支持的发布目标
  3. 03解决冲突并继续回移
  4. 04仅按请求创建 PR

适用场景

  1. 01将修复回移到指定发布分支
  2. 02为批量回移筛选受支持版本
  3. 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 调用。

  1. 开始回移:针对目标分支运行 backport --no-browser <pr> -r <release> -j "<justification>"
  2. 发生冲突时:工具会停止并列出冲突文件
  3. 分析冲突:阅读冲突文件,了解分支之间的差异
  4. 解决冲突:编辑文件以解决冲突,然后对已解决的文件运行 git add
  5. 继续:运行 backport --continue 以恢复操作
  6. 如果再次出现冲突,则重复上述步骤
  7. 完成:回移工具会挑拣提交并将分支推送到用户的 fork
  8. 创建 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 更改
  • 多个存在相互依赖更改的冲突文件
  • 可能不适合目标分支的更改

解决冲突时

  1. 说明冲突内容——展示相关代码段
  2. 说明原因——指出导致冲突的分支间差异
  3. 提出解决方案——如果情况复杂,则寻求指导
  4. 解决后:运行 git add <files>,然后运行 backport --continue

评论

支持 Markdown