release-cherry-pick

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Cherry-pick PRs to a Release Branch

将PR Cherry-pick到发布分支

Cherry-pick all merged
main
PRs labeled
cherry-pick-<version>
(but not
cherry-pick-done
) into the corresponding
release/<version>
branch, one by one in merge order.
将所有已合并到
main
分支、带有
cherry-pick-<version>
标签(但未标记
cherry-pick-done
)的PR,按合并顺序逐个cherry-pick到对应的
release/<version>
分支。

Step 1 — Identify the target version

步骤1 — 确定目标版本

Ask the user for the release version (e.g.
0.44.0
) if not already provided.
Set
VERSION=<version>
for use in subsequent steps.
如果用户未提供发布版本(例如
0.44.0
),请向用户询问。
设置
VERSION=<version>
以便后续步骤使用。

Step 2 — Fetch pending PRs

步骤2 — 获取待处理的PR

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' -k3
Present the list to the user before proceeding.
使用GitHub搜索API列出带有cherry-pick标签但未标记cherry-pick-done的PR,按合并日期升序排序:
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' -k3
在继续操作前将列表展示给用户。

Step 3 — Set up the release branch

步骤3 — 准备发布分支

Check out
release/<VERSION>
, creating it from the remote if it doesn't exist locally:
bash
git fetch origin release/<VERSION>
git checkout release/<VERSION>
检出
release/<VERSION>
分支,如果本地不存在则从远程创建:
bash
git fetch origin release/<VERSION>
git checkout release/<VERSION>

Step 4 — Get merge commit SHAs

步骤4 — 获取合并提交SHA

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'
所有PR均为 squash-merged(压缩合并),因此每个PR对应一个单父提交。获取每个PR的SHA:
bash
gh pr view <NUM> --repo NVIDIA/Model-Optimizer --json mergeCommit --jq '.mergeCommit.oid'

Step 5 — Cherry-pick in merge order

步骤5 — 按合并顺序执行Cherry-pick

Cherry-pick each commit with
-s
(DCO sign-off). GPG signing is handled automatically by the repo's git config.
bash
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 --continue
使用
-s
参数(DCO签署)执行cherry-pick操作。仓库的git配置会自动处理GPG签名。
bash
git cherry-pick -s <SHA>
冲突处理: 告知用户哪个PR引发了冲突,请他们修复后继续:
bash
git cherry-pick --continue

Step 6 — Create a PR to the release branch

步骤6 — 创建指向发布分支的PR

Push the cherry-picks to a new branch and open a PR targeting
release/<VERSION>
. The PR title lists every cherry-picked PR number. The body uses
## Cherry-picked PRs
as the only heading with one
- #<NUM>
bullet per PR — no titles, no links, no extra text.
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-pick后的提交推送到新分支,并创建一个以
release/<VERSION>
为目标分支的PR。PR标题列出所有被cherry-pick的PR编号。PR正文仅使用
## Cherry-picked PRs
作为标题,每个PR对应一个
- #<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

Cherry-picked PRs

  • #<NUM1>
  • #<NUM2> ... EOF )"
undefined
  • #<NUM1>
  • #<NUM2> ... EOF )"
undefined

Step 7 — Apply cherry-pick-done label

步骤7 — 添加cherry-pick-done标签

Add the
cherry-pick-done
label to every PR that was successfully cherry-picked:
bash
for pr in <NUM1> <NUM2> ...; do
  gh pr edit $pr --repo NVIDIA/Model-Optimizer --add-label "cherry-pick-done"
done
为所有成功完成cherry-pick的PR添加
cherry-pick-done
标签:
bash
for pr in <NUM1> <NUM2> ...; do
  gh pr edit $pr --repo NVIDIA/Model-Optimizer --add-label "cherry-pick-done"
done