Release workflow¶
Cut a new stax release with an auto-generated changelog entry.
make release # defaults to a minor bump
make release LEVEL=patch # patch bump
make release LEVEL=major # major bump
During cargo release's pre-release hook, git-cliff regenerates the whole CHANGELOG.md from the git history, treating the commits since the latest v<major>.<minor>.<patch> tag as the version being released. Configuration lives in cliff.toml.
What gets generated¶
git-cliff groups commits by their conventional-commit type:
| Commit prefix | Section |
|---|---|
feat: |
π Features |
fix: |
π Bug Fixes |
refactor: |
π Refactor |
perf: |
β‘ Performance |
docs: |
π Documentation |
style: |
π¨ Styling |
test: |
π§ͺ Testing |
chore: / ci: |
βοΈ Miscellaneous Tasks |
revert: |
βοΈ Revert |
| anything else | πΌ Other |
PR references like (#123) become links to the GitHub repo. The automated chore: Release stax version β¦ commits and chore(depsβ¦) bumps are skipped. Non-conventional squash-merge subjects are kept (in πΌ Other) rather than dropped, so no change silently disappears.
Notes¶
make releasedefaults to a minor bump. UseLEVEL=patch,LEVEL=minor, orLEVEL=majorto control the semver bump.- For a dry run, invoke
cargo release <level> --no-confirmdirectly without--execute; cargo-release skips the version bump, tag, and push. git-cliff still rewritesCHANGELOG.mdin place β rungit checkout CHANGELOG.mdto discard it. - Preview the upcoming entry without touching the file:
git-cliff --unreleased --tag v<next-version>. make releaseinstallscargo-releaseandgit-cliffviacargo installautomatically if they're missing, so there's no manual prerequisite step.