release-cherry-pick
Original:🇺🇸 English
Translated
Cherry-pick merged PRs labeled for a release branch into that branch, then open a PR and apply the cherry-pick-done label. Use when asked to "cherry-pick PRs for release/X.Y.Z", "pick PRs to release branch", or "cherry-pick labeled PRs".
3installs
Sourcenvidia/skills
Added on
NPX Install
npx skill4agent add nvidia/skills release-cherry-pickTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Cherry-pick PRs to a Release Branch
Cherry-pick all merged PRs labeled (but not ) into the corresponding branch, one by one in merge order.
maincherry-pick-<version>cherry-pick-donerelease/<version>Step 1 — Identify the target version
Ask the user for the release version (e.g. ) if not already provided.
0.44.0Set for use in subsequent steps.
VERSION=<version>Step 2 — Fetch pending PRs
Use the GitHub search API to list PRs that have the cherry-pick label but not cherry-pick-done, sorted by merge date ascending:
bash
gh api "search/issues?q=repo:NVIDIA/Model-Optimizer+is:pr+is:merged+base:main+label:cherry-pick-<VERSION>+-label:cherry-pick-done&sort=updated&order=asc&per_page=50" \
--jq '.items[] | [.number, .title, .pull_request.merged_at] | @tsv' \
| sort -t$'\t' -k3Present the list to the user before proceeding.
Step 3 — Set up the release branch
Check out , creating it from the remote if it doesn't exist locally:
release/<VERSION>bash
git fetch origin release/<VERSION>
git checkout release/<VERSION>Step 4 — Get merge commit SHAs
All PRs are squash-merged, so each has a single-parent commit. Retrieve the SHA for each PR:
bash
gh pr view <NUM> --repo NVIDIA/Model-Optimizer --json mergeCommit --jq '.mergeCommit.oid'Step 5 — Cherry-pick in merge order
Cherry-pick each commit with (DCO sign-off). GPG signing is handled automatically by the repo's git config.
-sbash
git cherry-pick -s <SHA>On conflict: Tell the user which PR caused the conflict and ask them to fix it, then continue:
bash
git cherry-pick --continueStep 6 — Create a PR to the release branch
Push the cherry-picks to a new branch and open a PR targeting . The PR title lists every cherry-picked PR number. The body uses as the only heading with one bullet per PR — no titles, no links, no extra text.
release/<VERSION>## Cherry-picked PRs- #<NUM>bash
git checkout -B cherry-picks/release-<VERSION>
git push -u origin cherry-picks/release-<VERSION>
gh pr create \
--title "[Cherry-pick] PRs #<NUM1> #<NUM2> ..." \
--base release/<VERSION> \
--head cherry-picks/release-<VERSION> \
--body "$(cat <<'EOF'
## Cherry-picked PRs
- #<NUM1>
- #<NUM2>
...
EOF
)"Step 7 — Apply cherry-pick-done label
Add the label to every PR that was successfully cherry-picked:
cherry-pick-donebash
for pr in <NUM1> <NUM2> ...; do
gh pr edit $pr --repo NVIDIA/Model-Optimizer --add-label "cherry-pick-done"
done