원클릭으로
merge-into-branch
// Create a merge branch from a chosen base, merge a chosen source/upstream branch into it, resolve common Roslyn conflicts (`.xlf`, `.resx`, compiler codegen), and summarize the resolutions.
// Create a merge branch from a chosen base, merge a chosen source/upstream branch into it, resolve common Roslyn conflicts (`.xlf`, `.resx`, compiler codegen), and summarize the resolutions.
Perform a branch snap (release branch cut) for dotnet repos like dotnet/roslyn. Use when: snapping a branch, cutting a release branch, creating a release branch, merging main into release, updating VS insertion config, updating darc subscriptions for a snap, moving milestones, or asked about snap workflow.
Install and validate a .NET SDK from an Azure DevOps internal build. Use this when asked to install, validate, or set up a .NET SDK from a dnceng/internal Azure DevOps build link or build ID.
Import Razor formatting log zips that the user has already downloaded from Azure DevOps feedback tickets or GitHub issues into FormattingLogTest, validate whether the captured problem still reproduces, and if needed drive a minimal repro plus fix workflow.
Set up tracking for a new C# compiler feature: create test plan issue, feature label, update Language Feature Status page, and link related PRs. Use when: setting up a new language feature, creating a test plan, tracking a new csharplang proposal in roslyn, or asked to 'set up feature tracking'.
Run the razor-toolset-ci pipeline to validate the current branch against large third-party repositories (MudBlazor, OrchardCore, ASP.NET Core, etc.). Use when asked to run toolset tests, ecosystem tests, or third-party validation.
Review code changes in dotnet/roslyn for correctness, performance, and consistency with project conventions. Use when reviewing PRs or code changes.
| name | merge-into-branch |
| description | Create a merge branch from a chosen base, merge a chosen source/upstream branch into it, resolve common Roslyn conflicts (`.xlf`, `.resx`, compiler codegen), and summarize the resolutions. |
| argument-hint | Which target/base branch should receive the merge, and what source/upstream ref should be merged? |
Use this skill when you need to merge one branch into another in dotnet/roslyn; for example, merging main into a release or servicing branch, or merging any other source branch into a target branch.
IMPORTANT: This workflow changes local git state by creating a branch, performing a merge, resolving conflicts, and producing a merge commit. Confirm the repo clone, base branch, upstream branch, and merge-branch name before making changes. If the working tree is dirty, stop and ask whether to continue in a clean worktree.
SKILL MAINTENANCE: If the actual merge process differs from this skill or a new Roslyn-specific conflict pattern shows up, remind the user to update this skill so future merges benefit from the fix.
Use this skill when:
Do not use this for a full branch snap workflow involving milestone movement, darc subscription changes, or release-train coordination. Use the snap skill for that.
Determine the following before changing git state:
merge/<source>-into-<base> with slashes sanitized as needed.Merge <source> into <target>.origin, upstream, etc.).Show the plan briefly and get explicit confirmation before creating the merge branch.
Fetch fresh refs, create the merge branch from the desired base, then merge the upstream ref:
git fetch --all --prune
git switch -c <merge-branch> <base-remote>/<base-branch>
git merge --no-ff --no-commit <upstream-remote>/<upstream-branch>
If the merge completes without conflicts, keep the merge uncommitted so the summary can be shown to the user before the final merge commit is created.
Keep a running list of every conflicted file and how it was resolved. The final summary must include:
.xlf conflictsFor any .xlf conflict:
Accept ours:
git checkout --ours -- <path-to-file>.xlf
Record which project the conflicted .xlf belongs to so it can be included in the final summary.
Run dotnet msbuild /t:UpdateXlf <path-to-project> for each affected project.
Re-stage the .xlf file and any other localization files updated by that target.
.resx conflictsFor any .resx conflict:
After the .resx merge, run:
dotnet msbuild /t:UpdateXlf <path-to-project>
Then re-stage the resulting resource and .xlf updates.
src/CompilersIf any files under src/Compilers change as part of the merge, regenerate compiler-generated code before finishing the merge:
dotnet run --file eng/generate-compiler-code.cs
Review and stage any generated changes before finishing the merge.
Resolve any remaining conflicts carefully using the repo's existing code patterns. Avoid unrelated cleanup or opportunistic edits during the merge.
Before presenting the summary or creating the merge commit, run a validating build with analyzers enabled to make sure the merge did not introduce new issues:
./build.sh --runAnalyzers
On Windows, use:
.\Build.cmd -runAnalyzers
If this build reports new issues caused by the merge, resolve them before continuing.
Once all conflicts are resolved and staged, present a concise but specific summary that includes:
.xlf → accepted ours and updated XLFs.resx → manually merged to preserve all strings and updated XLFssrc/Compilers → reran compiler code generationgit status --short
git --no-pager diff --cached --stat
git --no-pager diff --cached -- <path>
If there were no conflicts, say that plainly and note that the merge is ready to commit cleanly.
If this skill is being used from CCA and it creates a PR, add the same summary to a comment on that PR so reviewers can see exactly what conflicts were encountered and how they were resolved.
Ask explicitly whether to continue and create the merge commit.
Only after the user confirms:
git commit --no-edit
If a PR is then created from the merge branch:
Merge <source> into <target>.Auto-generated by merge-into-branch skill. so reviewers know the merge was mechanically produced.If the merge cannot be completed cleanly, stop and tell the user exactly what remains blocked.