changelog: adopt changie fragment files to end CHANGELOG merge conflicts#195
Draft
iainmcgin wants to merge 2 commits into
Draft
changelog: adopt changie fragment files to end CHANGELOG merge conflicts#195iainmcgin wants to merge 2 commits into
iainmcgin wants to merge 2 commits into
Conversation
Adds .changie.yaml, a header template, the changelog-* Taskfile tasks (install-changie downloads the pinned binary into .local/bin), a check-changelog CI job that fails when CHANGELOG.md drifts from the .changes/ sources, and a CONTRIBUTING section. CHANGELOG.md becomes a generated artifact; per-change entries move to fragment files under .changes/unreleased/, so concurrent PRs no longer collide on the changelog.
…OG.md Splits the released 0.2.0-0.7.0 sections verbatim into per-version .changes/<ver>.md files and regenerates CHANGELOG.md from them via changie merge. The released history round-trips byte-identical. The prior [Unreleased] entries belong to the next release and are added as .changes/<next>.md when that release is cut.
|
All contributors have signed the CLA ✍️ ✅ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Every PR that adds an entry to the top of
[Unreleased]inCHANGELOG.mdconflicts with every other open PR doing the same, so the merge queue turns into
a sequence of manual changelog rebases (we have hit this repeatedly across the
current server-hardening PR set). This switches to changie's
fragment model: each PR adds a new file under
.changes/unreleased/, andCHANGELOG.mdis assembled from.changes/at release time. New file → noshared lines → no conflict. It mirrors the buffa adoption (anthropics/buffa#230).
What
Two commits, reviewable separately:
.changie.yaml(tuned to our Keep a Changelog format:bracketed
[X.Y.Z],-bullets, multi-line bodies with a 2-space hangingindent),
.changes/header.tpl.md, the fourchangelog-*Taskfile tasks(
install-changiedownloads the pinned binary to.local/bin/,changelog-new/-batch/-merge), acheck-changelogCI job (sameshape as
check-generated-code), a CONTRIBUTING section, and.local/addedto
.gitignore.0.2.0…0.7.0split verbatim into.changes/<ver>.md, andCHANGELOG.mdregenerated from those. The releasedhistory round-trips byte-identical (verified with
diff).Unlike buffa, connect-rust's
CHANGELOG.mdhas no per-version compare-linkfooters, so
footerFormatis omitted to keep the migration byte-identical(compare-links can be added later as a separate, intentional change).
Sequencing — read before merging
This is prepared as a draft and is deliberately not landable yet. Per
plan, we flush the current open PR set and cut the next connect-rust release
(on buffa 0.8.0) first, then switch changelog tooling.
The current
[Unreleased]entries are intentionally not carried into thisbranch — they belong to the next release. Finalize at release-cut time:
main.task changelog-batch -- 0.8.0is not used here (no fragments yet); insteadcreate
.changes/0.8.0.mdfrom the cut release's notes (the section that was[Unreleased]onmain), thentask changelog-merge.check-changelogthen passes and the PR is landable.After this lands, contributors add
.changes/unreleased/*.yamlfragments viatask changelog-newinstead of editingCHANGELOG.md(which becomes generated).Validation
changie mergeis idempotent;check-changelogpasses on the committed tree.## [0.x]…EOF) is byte-identical tomain.task --listparses;.changie.yamlandci.ymlare valid YAML.