用途:在 dotnet/roslyn 中把一个分支合并到另一个分支,例如将 main 合入 release 或 servicing 分支,或为准备 PR 创建一次性合并分支。该技能会改动本地 git 状态(建分支、合并、解冲突、生成合并提交),执行前需确认仓库克隆、基线分支、上游分支与合并分支名;工作区不干净时应停下询问。
主要能力与用法:先收集并确认输入,默认合并分支名为 merge/<source>-into-<base>,PR 标题为 Merge <source> into <target>。随后执行: git fetch --all --prune git switch -c <merge-branch> <base-remote>/<base-branch> git merge --no-ff --no-commit <upstream-remote>/<upstream-branch> 无冲突时保持未提交,先向用户展示摘要。
冲突处理规则:.xlf 冲突执行 git checkout --ours -- <path>.xlf,再对受影响项目运行 dotnet msbuild /t:UpdateXlf <path-to-project> 并重新暂存;.resx 冲突需手工合并保留双方所有字符串,再运行 UpdateXlf;src/Compilers 有改动时运行 dotnet run --file eng/generate-compiler-code.cs 重新生成代码;src/Razor/src/Compiler 改动需定位受影响测试,用 dotnet test <test-project> --framework <coreclr-tfm> --filter "<affected-tests>" -p:GenerateBaselines=true 重新生成基线(必须带过滤,否则 GenerateBaselinesMustBeFalse 会失败),再正常运行受影响测试及整个测试项目。
验证与提交:解冲突后运行 ./build.sh --runAnalyzers(Windows 为 .\Build.cmd -runAnalyzers),确认无新问题;展示冲突文件、解决方式、测试结果与 diff 摘要,经用户确认后执行 git commit --no-edit。若创建 PR,标题保持一致并在正文注明由该技能自动生成。限制:不适用于涉及里程碑移动、darc 订阅变更或发布列车协调的完整分支快照流程,那应使用 snap 技能;无法干净完成时应停止并说明阻塞点。