用途:把 NVIDIA/Megatron-LM 的大型 pull request 拆成多个较小的 PR,使每个 PR 触及的 CODEOWNERS 评审组尽可能少,从而降低评审负担。例如只改 megatron/core/ 的 PR 只需核心评审组,而同时改 examples/、tools/、megatron/training/ 的 PR 会拉入更多组。
主要能力:解析 .github/CODEOWNERS 建立文件路径到 owner 组的映射;统计每个改动文件所需的评审组;按组聚类文件并给出拆分方案表(PR 名称、包含文件、所需评审组、依赖关系);经用户批准后执行拆分,用 git diff upstream/main..<source-branch> -- <paths> | git apply 提取文件级差异,提交并推送到用户 fork,创建草稿 PR。
关键约束:每个 PR 必须可独立合并、无损坏导入或缺失符号;测试随其验证的生产代码一起走,不单独拆出;若 PR B 依赖 PR A 中重命名的符号,需在 PR A 中提供向后兼容别名或再导出;执行前须等待用户批准。
GitHub 流程限制:贡献者无法向 NVIDIA/Megatron-LM 推送分支,PR base 必须是上游分支,因此标准 stacked-PR 流程不可用。所有 PR 先以 base main 创建;只有 vetter 评论 /ok to test <head-sha> 后 copy-pr-bot 才生成 pull-request/<N> 镜像 ref,之后用 gh pr edit <child> --base pull-request/<base PR number> 堆叠依赖 PR。base 为 pull-request/* 时切勿合并,否则 squash 落入机器人临时 ref 而非 main,PR 会变成 MERGED 且无法重开,须先改回 main。
使用方式:先运行 gh pr view <number> --repo NVIDIA/Megatron-LM --json title,body,headRefName,author 与 gh pr diff <number> --repo NVIDIA/Megatron-LM --stat,并用 gh api user --jq .login 确认当前用户;随后分析、提出拆分方案、等待批准、执行并报告所有 PR URL。始终创建草稿 PR 并推送到用户 fork,绝不直接推上游;每个拆分 PR 优先使用单个干净提交;难以归类的文件应询问用户;若当前用户非原作者,新 PR 描述须注明原作者。
适用场景:需要降低大型 PR 评审组数量、按 CODEOWNERS 边界组织改动的 Megatron-LM 贡献流程。限制:依赖 GitHub CLI 与 copy-pr-bot 镜像机制,具体环境与权限要求资料未提供。