v0.22.0
[0.22.0] - 2022-10-21
Highlights
The goal of this release is improved workspace support, including
- Workspace inheritance support
- Greater control over versioning by supporting calling
cargo release version
as needed and thencargo release --unpublished
- Setting configured crate owners when publishing new crates
- Identifying failures early like missing metadata, hitting rate limits, etc
- Inspect changes with
cargo release changes
, including conventional commit support - Improved defaults
This does mean that cargo release
(no other args) changed from recovering
from a failed release to releasing the currently specified versions of crates.
Recovery is now done more manually with cargo release publish
, etc.
Breaking Changes
- Removed
dev-version
support consolidate-commits
is now the default for workspaces- It is also now all-or-nothing
consolidate-pushes
is now exclusively useddependent-versions = "upgrade"
is now the default- Removed
ignore
,warn
, anderror
- Removed
Cargo.toml
'spackage.publish = false
disables release- Removed
--dump-config
in favor ofcargo release config
- Remove
--token
in favor in favor of more secure ways of authenticating cargo release
is no longer used for recovery, instead usecargo release publish
,cargo release tag
, etc- Error if nothing to release
- Changed standard exit code to 101
Compatibility
MSRV is now 1.64.0
Fixes
- Turn some verification errors into warnings on steps
- Run replacements when no version is bumped
- Be smarter about finding previous tags
- Bail out early when we'll hit crates.io rate limits
- Bail out early when we'll hit
cargo publish
missing field errors - Implicitly layer package over workspace for workspace config when not in a workspace
- Only update versions for path dependencies
- Cleaned up output
- Ignore tests when tracking changes
Features
package.version.workspace = true
support- Forces
consolidate-commits = true
- Forces
shared-version = "workspace"
- Forces
dependency.<name>.workspace = true
supportpackage.publish.workspace = true
supportowners = []
to set crate owners for new workspace members- Use
cargo release owner
to update owners for existing crates
- Use
- In addition to
shared-version = true
, we now support named groups, likeshared-version = "foo"
--unpublished
flag to automatically release unpublished crates- Expose
changes
,hook
, andcommit
steps