assemble-changelog
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAssemble-changelog
Assemble-changelog
Release-time changelog assembly for the Rerun repo.
Always work in the root of a standalone checkout — normally the branch, where the result is committed.
This is step 4 of RELEASES.md; read it for the surrounding context.
rerun-io/rerunprepare-release-0.x.yBefore doing any release work, verify that the current directory is the repository root and that its is :
originrerun-io/rerunbash
test "$(git rev-parse --show-toplevel)" = "$PWD"
git remote get-url originDo not run the workflow in the reality monorepo, including from its directory.
The release scripts need the standalone repository's tags and resolve commit references against .
Running them against reality can silently resolve reality PR numbers to unrelated Rerun PRs.
rerun/0.x.y(#N)rerun-io/rerunIf either precondition is not met, stop before running any release command.
Tell the user that the skill requires the root of a standalone checkout, and ask them to restart it there.
Do not clone a repository, fetch tags, or switch branches for the user.
rerun-io/rerunResolve the target version from (e.g. ). If absent, read it
from () and confirm with the user.
$ARGUMENTS0.34.0Cargo.tomlversion = "0.x.y-…"Rerun仓库的版本发布阶段变更日志组装流程。
请始终在独立的仓库根目录下操作——通常是分支,操作结果将提交到该分支。
这是RELEASES.md中的第4步;请阅读该文档了解相关背景信息。
rerun-io/rerunprepare-release-0.x.y在进行任何发布工作之前,请验证当前目录是否为仓库根目录,且指向:
originrerun-io/rerunbash
test "$(git rev-parse --show-toplevel)" = "$PWD"
git remote get-url origin请勿在reality单体仓库中运行此工作流,包括其子目录。
发布脚本需要独立仓库的标签,并针对解析提交引用。
在reality仓库中运行脚本可能会将reality的PR编号错误解析为无关的Rerun PR。
rerun/0.x.yrerun-io/rerun(#N)如果任一前提条件不满足,请在运行任何发布命令前停止操作。
告知用户本技能需要在独立的仓库根目录下执行,并请用户在该目录重新启动操作。
请勿为用户克隆仓库、拉取标签或切换分支。
rerun-io/rerun从中解析目标版本(例如)。如果未提供,则从中读取(格式为)并与用户确认。
$ARGUMENTS0.34.0Cargo.tomlversion = "0.x.y-…"Workflow
工作流
1. Assemble upcoming/
→ the release changeset
upcoming/1. 将upcoming/
条目合并为版本变更集
upcoming/The curated entries live one-file-per-PR in
(skip ). Each declares in its
frontmatter. Merge them into , creating that file from
if it does not exist yet (set to the version — keep it
quoted, e.g. , so YAML keeps it a string — and one lower than the previous release):
docs/content/changelog/upcoming/*.md_template.mdtype: highlight|breaking|featuredocs/content/changelog/changeset-0-XX.mddocs/content/changelog/_template.mdtitletitle: "0.36"order- → fold into the
highlightprose (write a cohesive few sentences selling the release; use the entries as raw material, don't just concatenate).## Highlights - → one
featuresubsection each under###.## New features - → one
breakingsubsection each under###. If none, write## Breaking changes.None.
Keep the sections in that order. The changelog is user-facing (it's part of the website),
so it leads with what's new; the verbose, developer-only breaking-change migration guides
go last so most readers don't have to scroll past them.
Tailor the output to the release type:
- Patch release (, Y > 0) → typically only bug fixes. Skip
0.x.YandHighlights(there usually won't beNew featuresentries anyway); keepupcoming/only if there are any.Breaking changes - Minor release () → the full template: highlights, new features, breaking changes.
0.X.0
Preserve each entry's prose and structure (migration guides, tables, directives,
screenshots, links).
De-duplicate overlapping entries and order breaking changes most-impactful first.
Drop the per-entry frontmatter.
snippet:Relative doc links in entries were written as if from (e.g.
), which is correct once merged — keep them as-is.
changelog/../reference/migration/...Finally, point the frontmatter in at
: CI's requires the
newest changeset to be the redirect target, so the repoint must land together with the
new changeset.
redirect:docs/content/changelog.mdchangelog/changeset-0-XXscripts/ci/check_changelog_redirect.py经过整理的条目以每个PR对应一个文件的形式存放在中
(跳过)。每个文件的前置元数据中声明了。将这些条目合并到中,如果该文件尚未存在,则从创建(将设置为版本号——保持引号包裹,例如,确保YAML将其识别为字符串——并将设置为比上一个版本小1):
docs/content/changelog/upcoming/*.md_template.mdtype: highlight|breaking|featuredocs/content/changelog/changeset-0-XX.mddocs/content/changelog/_template.mdtitletitle: "0.36"order- → 整合到
highlight章节中(撰写连贯的几句话来介绍版本亮点;以条目为素材,不要简单拼接)。## Highlights - → 在
feature下每个条目对应一个## New features子章节。### - → 在
breaking下每个条目对应一个## Breaking changes子章节。如果没有此类条目,请写入###。None.
请保持上述章节顺序。变更日志面向用户(会展示在官网中),因此优先展示新内容;面向开发者的详细破坏性变更迁移指南放在最后,避免大多数读者需要滚动跳过。
根据版本类型调整输出内容:
- 补丁版本(,Y > 0)→ 通常仅包含Bug修复。跳过
0.x.Y和Highlights章节(通常New features目录下也不会有对应条目);仅当存在破坏性变更时保留upcoming/章节。Breaking changes - 次要版本()→ 使用完整模板:包含亮点、新功能、破坏性变更章节。
0.X.0
保留每个条目的文本内容和结构(迁移指南、表格、指令、截图、链接)。
去重重叠条目,并按影响程度从高到低排列破坏性变更。
删除每个条目的前置元数据。
snippet:条目中的相对文档链接是基于目录编写的(例如),合并后链接依然有效——请保持原样。
changelog/../reference/migration/...最后,将中的前置元数据指向:CI的要求最新的变更集作为重定向目标,因此重定向设置必须与新变更集一同提交。
docs/content/changelog.mdredirect:changelog/changeset-0-XXscripts/ci/check_changelog_redirect.py2. Resolve release blockers
2. 解决发布阻塞问题
Ensure that every non-template file from was merged into the changeset, then search the assembled changeset for unresolved placeholders:
upcoming/bash
rg -n 'TODO\([^)]+\)' docs/content/changelog/changeset-0-XX.md # NOLINTResolve every match before continuing.
An unresolved blocks the release.
TODO(name)确保目录下所有非模板文件都已合并到变更集中,然后在组装好的变更集中搜索未解决的占位符:
upcoming/bash
rg -n 'TODO\([^)]+\)' docs/content/changelog/changeset-0-XX.md # NOLINT继续操作前请解决所有匹配项。
未解决的会阻塞发布流程。
TODO(name)3. Generate the summary and detail sections into CHANGELOG.md
3. 生成CHANGELOG.md的摘要和详细章节
bash
pixi run uvpy scripts/generate_changelog.py --version 0.x.yEdit PR titles/labels to improve the output, then copy the result into
(drop the trailing "Chronological changes" section; replace the placeholder video/blogpost
lines as previous releases did). Spot-check a few entries against the actual PRs:
polluted titles (old, unrelated PRs; for core team members) mean a PR-number
lookup misfired — see the warning at the top.
CHANGELOG.mdthanks @…Do this after step 1: the script reads the assembled changeset and emits a summary of it
(section headings + links to the changeset on the website), rather than inlining its prose.
therefore never duplicates the changeset — if the changeset is missing, the
script emits an unresolved placeholder instead.
CHANGELOG.mdbash
pixi run uvpy scripts/generate_changelog.py --version 0.x.y编辑PR标题/标签以优化输出结果,然后将结果复制到中
(删除末尾的“Chronological changes”章节;按照之前版本的方式替换占位的视频/博客文章链接)。随机抽查几个条目与实际PR对比:
标题混乱(包含旧的、无关的PR;核心团队成员的内容)意味着PR编号查找出错——请参考顶部的警告信息。
CHANGELOG.mdthanks @…请在步骤1之后执行此操作:该脚本会读取组装好的变更集并生成其摘要(章节标题+指向官网变更集的链接),而非直接嵌入其文本内容。
因此永远不会与变更集重复内容——如果变更集缺失,脚本会输出未解决的占位符。
CHANGELOG.md4. Empty the inbox
4. 清空待处理目录
Delete the merged entries, keeping :
upcoming/*.md_template.mdbash
find docs/content/changelog/upcoming -maxdepth 1 -type f -name '*.md' ! -name '_template.md' -exec git rm -- {} +删除已合并的条目,保留:
upcoming/*.md_template.mdbash
find docs/content/changelog/upcoming -maxdepth 1 -type f -name '*.md' ! -name '_template.md' -exec git rm -- {} +Checklist before declaring done
完成前检查清单
- Every non-template entry is represented in the changeset.
upcoming/ - No remains in the changeset.
TODO(name) - reads as a coherent whole, not a list of fragments.
## Highlights - contains only
upcoming/._template.md - passes (redirect points at this changeset).
python scripts/ci/check_changelog_redirect.py
- 所有非模板的条目都已在变更集中体现。
upcoming/ - 变更集中无遗留的。
TODO(name) - 章节内容连贯,而非片段列表。
## Highlights - 目录下仅保留
upcoming/。_template.md - 执行通过(重定向指向当前变更集)。
python scripts/ci/check_changelog_redirect.py
Notes
注意事项
- This skill lives in in the standalone Rerun repository.
skills/assemble-changelog - Synced commits in carry a
rerun-io/reruntrailer (the reality merge commit);Source-Refresolves it back to the originating reality PR for correct titles, labels, and contributors.generate_changelog.py - The next release's changeset is not pre-created: an empty changeset for an
unreleased version would make fail, since it requires the newest
check_changelog_redirect.pyto be the redirect target. During a cycle,changeset-0-xx.mdis the only in-flight artifact.upcoming/
- 本技能位于独立Rerun仓库的目录下。
skills/assemble-changelog - 中的同步提交带有
rerun-io/reruntrailer(即reality合并提交);Source-Ref会将其解析回原始的reality PR,以获取正确的标题、标签和贡献者信息。generate_changelog.py - 请勿预先创建下一个版本的变更集:针对未发布版本的空变更集会导致执行失败,因为该脚本要求最新的
check_changelog_redirect.py作为重定向目标。在版本周期内,changeset-0-xx.md是唯一的待处理工件。upcoming/