docs: changelog fragments instead of one shared CHANGELOG.md (every PR conflicts on it)
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 45/100
- Issue 类型
- 文档
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- c
- 领域
- documentation, release
调研方向
Look at the existing CHANGELOG.md structure and the release process in tools/. Study how other projects like CPython (blurb) or Go implement fragment-based changelogs. The work involves creating a new directory (e.g., changes/), writing a script to assemble fragments, and adding a CI gate to enforce fragment creation for PRs touching src/ or lib/. Done when two PRs adding fragments no longer conflict and the release script produces an identical CHANGELOG.md section.
由索引模型根据 Issue 内容生成。
描述
Problem. CHANGELOG.md is one 11,638-line file touched by 66 commits in the last month. Every concurrent PR edits the same region, so every pair of PRs conflicts on it: the same friction class as the pinned counts in #1264 (a conflict also stops pull_request CI from running at all, as seen on #1260).
What mature languages do. Each change carries its own fragment file, and a tool assembles them at release:
- CPython:
Misc/NEWS.d/fragments viablurb. - Go (since 1.23):
doc/next/*.mdfragments merged into the release notes. - Rust: a
relnotesPR label, from which the release team curatesRELEASES.md. - Many Python projects:
towncrier.
Bar (what must be true).
- A PR adds
changes/<category>/<PR-or-slug>.md(category ∈ Added/Changed/Fixed/Removed/Security or the repo's existing headings) and never editsCHANGELOG.mddirectly. - The release-cut step (
tools/+ the release skill) assembles the fragments into a newCHANGELOG.mdsection and deletes them, deterministically: same fragments → byte-identical section. - A gate: a PR that touches
src/orlib/without a fragment fails, unless an explicitskip-changeloglabel or trailer is present.CHANGELOG.mdedits outside a release cut fail. - Two PRs each adding a fragment never conflict with each other. Prove it with two branches.
- Existing history in
CHANGELOG.mdis untouched.
Ranked #1 of the docs follow-ups from the 2026-09-22 comparison with other languages (cheapest, and it removes a guaranteed conflict from every PR). Refs #1264.
- 主要语言
- C
- 星标
- 3
- 派生
- 7
- 平均合并
- 4 小时 7 分钟
- 30 天内合并 PR
- 112
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 提供 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
InauguralSystems/EigenScript 的其他 Issue
-
area:embed kind:silent-wrong
难度 2/5 1-3 小时 新手友好度 78/100
InauguralSystems/EigenScript#1387 ·
维护者通常 1 天内回复
-
area:stdlib kind:silent-wrong
难度 2/5 1-3 小时 新手友好度 86/100
InauguralSystems/EigenScript#1378 ·
维护者通常 1 天内回复
-
area:gates kind:gate-defect
难度 2/5 1-3 小时 新手友好度 78/100
InauguralSystems/EigenScript#1374 ·
维护者通常 1 天内回复
-
Error carets pad multi-byte UTF-8 byte-for-byte, so the ^ lands right of the token on a terminal未关闭area:lint-tooling kind:silent-wrong
难度 2/5 1-3 小时 新手友好度 84/100
InauguralSystems/EigenScript#1373 ·
维护者通常 1 天内回复
-
area:gates kind:docs-drift
难度 1/5 1 小时以内 新手友好度 88/100
InauguralSystems/EigenScript#1372 ·
维护者通常 1 天内回复
查看 InauguralSystems/EigenScript 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 85/100
microsoft/ebpf-for-windows#5604 ·
维护者通常 3 天内回复
-
难度 2/5 1-3 小时 新手友好度 84/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 70/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 84/100
AcademySoftwareFoundation/openexr#2683 ·
维护者通常 1 天内回复