1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# cargo-release configuration (#257).
# Reference: https://github.com/crate-ci/cargo-release/blob/master/docs/reference.md
#
# Releases are TAG-TRIGGERED. Pushing a `v*` tag fires
# .github/workflows/release.yml, which builds the cross-platform binaries,
# publishes to crates.io (publish-crate job), creates the GitHub Release, and
# bumps the Homebrew formula.
#
# cargo-release therefore owns only the local, error-prone prep — bump the
# version and roll the CHANGELOG into one commit. It does NOT publish, tag, or
# push, because:
# - publish: crates.io is owned by CI; publishing here too would double-publish.
# - tag/push: `main` is protected (PR-only), so the prep commit lands via a PR
# and the `v*` tag is cut on the merged commit. See RELEASING.md.
# Only cut releases from main or a release/* prep branch.
= ["main", "release/*"]
# crates.io publish is owned by the publish-crate job in release.yml.
= false
# The v* tag is created on the merged main commit (see RELEASING.md), not by
# cargo-release, so it matches what actually landed on the protected branch.
= false
= false
# Documents the tag format CI triggers on (the `v*` filter in release.yml).
= "v{{version}}"
= "chore(release): {{version}}"
# Keep-a-Changelog rollover. On `cargo release <level>` this turns the
# `[Unreleased]` section into a dated, versioned section and re-seeds a fresh
# `[Unreleased]` + compare link for the next cycle. Pattern from the
# cargo-release FAQ (docs/faq.md#maintaining-changelog).
= [
{ = "CHANGELOG.md", = "Unreleased", = "{{version}}", = 1 },
{ = "CHANGELOG.md", = "\\.\\.\\.HEAD", = "...{{tag_name}}", = 1 },
{ = "CHANGELOG.md", = "ReleaseDate", = "{{date}}", = 1 },
{ = "CHANGELOG.md", = "<!-- next-header -->", = "<!-- next-header -->\n\n## [Unreleased] - ReleaseDate", = 1 },
{ = "CHANGELOG.md", = "<!-- next-url -->", = "<!-- next-url -->\n[Unreleased]: {{repository}}/compare/{{tag_name}}...HEAD", = 1 },
]