# cargo-release (https://github.com/crate-ci/cargo-release). git-cliff decides # what the next version is (cliff.toml); this decides what happens to the tree # when it is applied. Run from `main`, by a person — never from a feature # branch, and never inside a pull request. # # Everything that leaves the machine is off. This project publishes nothing: # no crates.io release, no artifacts, no prebuilt binaries. What is wanted is # narrow — the workspace version moves, Cargo.lock follows it, and a tag marks # where the next bump starts counting from. # Not `cargo publish`, not now and not by accident. Every crate also carries # publish = false in its manifest, so this is the second of two locks. publish = false # No `git push`. The bump is a local act, reviewed like any other commit before # it goes anywhere, and pushing a tag is deliberately a separate command. push = false # One version across every crate in the workspace. These crates are one product # released together, not independently useful libraries, and a reader who sees # didbot-name 0.4.2 next to didbot-pds 0.1.9 has learned nothing # except that the numbers are meaningless. It is also what makes a single tag # correct below. shared-version = true # One commit for the whole bump rather than one per crate. With shared-version # set, {{version}} still renders in the message; without it, cargo-release # leaves the placeholder as literal text. consolidate-commits = true # The version commit has to satisfy the commit-msg hook (prek.toml), because # cargo-release shells out to `git commit` and the hook fires. Hence the # `chore(release):` prefix and the lower-case description; `chore` is in # committed.toml's allowed_types for exactly this. pre-release-commit-message = "chore(release): didbot v{{version}}" # A tag is the one piece that is not optional. `git cliff --bumped-version` # counts commits since the most recent tag, so a bump that leaves no tag cannot # be run twice: the second run would recompute from the same starting point and # hand back the same answer. # # The name carries no crate name, which is what keeps a workspace bump to a # single tag rather than one per member. tag = true tag-name = "v{{version}}" # `tag-message` being set is what makes the tag annotated rather than # lightweight, and that distinction reaches past git's own rules: an annotated # tag is an object with its own hash, and Tangled keys off that object. tag-message = "didbot {{tag_name}}"