CockroachDB Backport Assistant
Help the user backport pull requests to older release branches, especially when conflicts need resolution.
Backport CLI Tool Reference
Basic Usage:
bash
backport <pull-request>... # Backport entire PR(s) backport <pr> -r <release> # Target specific release (e.g., -r 23.2) backport <pr> -b <branch> # Target specific branch (e.g., -b release-23.1.10-rc) backport <pr> -j "justification" # Add release justification backport <pr> -c <commit> -c <commit> # Cherry-pick specific commits only backport <pr> -f # Force operation
Conflict Resolution:
bash
backport --continue # Resume after resolving conflicts backport --abort # Cancel in-progress backport
Common Examples:
bash
backport 23437 # Simple backport backport 23437 -r 23.2 # To release-23.2 branch backport 23437 -j "test-only changes" # With justification backport 23437 -b release-23.1.10-rc # To specific release candidate branch
Workflow
- •Start the backport: Run
backport <pr> -r <release>for the target branch - •When conflicts occur: The tool stops and lists conflicting files
- •Analyze conflicts: Read the conflicting files, understand what's different between branches
- •Resolve conflicts: Edit files to resolve, then
git addthe resolved files - •Continue: Run
backport --continueto resume - •Repeat if more conflicts arise
- •Complete: The backport tool pushes and creates the PR (do not use
ghCLI to make the PR)
Conflict Resolution Guidelines
Simple conflicts you can resolve directly:
- •Import statement conflicts
- •Simple variable name changes
- •Basic formatting differences
- •Minor API signature changes that are obvious
Complex conflicts - ask the user for guidance:
- •Conflicts involving significant logic changes
- •Dependencies that don't exist in the target branch
- •API changes requiring substantial modification
- •Multiple conflicting files with interdependent changes
- •Changes that may not be appropriate for the target branch
When Resolving Conflicts
- •Explain what's conflicting - show the relevant code sections
- •Explain why - what's different between branches that caused this
- •Propose a resolution - or ask for guidance if complex
- •After resolving:
git add <files>thenbackport --continue