SuperAPI AI 工具集

pr-merge-base

编程与开发

查看项目

更新于 10-16 07:44

技能介绍

pr-merge-base

pr-merge-base 是一个将多个 PR 合并到基线分支(main/master)的技能,采用类似队列的顺序合并方式,并处理合并冲突。

用途

把多个 PR 按顺序合并进基线分支,适用于 PR 之间可能相互冲突、或与基线分支冲突的合并场景。

主要能力

  • 检测基线分支:通过 git remote show origin 或仓库约定识别默认分支(main、master 或仓库特定命名)。

  • 枚举 PR:列出所有待合并 PR,并获取每个 PR 的最新 HEAD。

  • 创建检查点:记录当前基线分支顶端作为回滚点。

    CHECKPOINT=$(git rev-parse HEAD)
    
  • 创建集成分支:在临时分支上工作,验证后再触碰基线分支。

    git checkout -b merge-queue/<timestamp> <base>
    
  • 确定合并顺序:

    • 若用户指定顺序,则按该顺序执行。
    • 否则计算依赖/拓扑顺序(若 PR B 依赖 PR A,则先合并 A)。
    • 若 PR 相互独立且无明确顺序,则呈现列表,请用户在继续前确认或重新排序。
  • 带冲突处理的顺序合并:对每个 PR 依次执行:

    1. 尝试将 <pr-branch> 通过 git merge --no-ff 合并进集成分支。
    2. 若干净合并成功,继续下一个 PR。
    3. 若出现冲突:
      • 使用 difft 与代码库上下文分析每个冲突文件。
      • 基于结构理解应用解决方案(格式偏好基线,逻辑偏好 PR)。
      • 若无法有把握地解决冲突,则中止本次合并(git merge --abort),停止并向用户报告冲突,给出双方内容与建议解决方案。
    4. 每次成功合并后,若构建命令可用,验证构建仍通过。
  • 验证集成分支:所有 PR 在集成分支上合并完成后,若可用则运行完整构建/测试套件。

  • 报告结果:向用户展示已验证的集成分支。不要自动推进基线分支——仅在用户明确要求时才更新基线。

中止条件

遇到以下情况时停止队列并报告:

  • 冲突无法安全自动解决。
  • 合并后构建/测试失败。
  • 某个 PR 已被取代或关闭。

回滚

git checkout <base> && git branch -D merge-queue/<timestamp>

基线分支在检查点处保持不变。

输出

对每个 PR 报告:成功合并、已解决冲突(含细节)或被阻塞(含原因)。