| name | release |
| description | Create a release proposal for the v2.x branch by cherry-picking commits from main |
| disable-model-invocation | true |
| argument-hint | [version (optional, auto-determined from PR labels)] |
Create a v2.x release proposal. If a version is provided as $ARGUMENTS, use it. Otherwise, determine it automatically (see step 2).
Prerequisites
The branch-diff tool must be installed globally:
npm install branch-diff -g
Steps
1. Identify commits to cherry-pick
Use the branch-diff tool to list commits on main not yet applied to v2.x:
branch-diff v2.x main
Review the output with the user. Skip:
- Version bump commits (e.g. "Bump package version on to 3.0.0-pre")
- Commits that would result in empty cherry-picks (already applied or superseded)
Confirm the list of commits with the user before proceeding.
2. Determine the version number
If the user didn't provide a version, determine it from PR labels. For each commit being cherry-picked, extract the PR number from the commit message (e.g. (#42)) and check its labels:
gh pr view <number> --json labels --jq '.labels[].name'
- If any PR has a
semver-minor label, the release is a minor bump.
- If all PRs have at most a
semver-patch label, the release is a patch bump.
Get the current version from the tip of v2.x (the most recent version commit message), then compute the next version accordingly. Confirm the version with the user.
In the steps below, $VERSION refers to the determined version number.
3. Create a worktree
Create a git worktree from the current repo, checking out a new branch v$VERSION-proposal based on the v2.x branch:
git worktree add ../pprof-format-v2 -b v$VERSION-proposal v2.x
All subsequent steps run in the worktree directory.
4. Cherry-pick commits
Cherry-pick the agreed-upon commits in chronological order (oldest first):
git cherry-pick <hash1> <hash2> ...
If a cherry-pick has conflicts, stop and resolve with the user.
5. Create the version bump commit
Bump the version in package.json and package-lock.json using npm, then commit:
npm version $VERSION --no-git-tag-version
git add package.json package-lock.json
git commit -m "v$VERSION"
6. Push and create a PR
Push the branch and create a PR targeting v2.x:
git push -u origin v$VERSION-proposal
Create the PR with gh pr create --base v2.x. The PR body should categorize the cherry-picked PRs by type, following this pattern:
# New features
* #NNN
# Improvements
* #NNN
# Bug fixes
* #NNN
# Other (build, dev)
* #NNN
Only include sections that have entries. Reference PR numbers from the original commit messages.