cargo-release v0.22.0 Release Notes

Release Date: 2022-10-21 // over 1 year ago
  • 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 then cargo 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
    • 0๏ธโƒฃ consolidate-commits is now the default for workspaces
      • It is also now all-or-nothing
    • consolidate-pushes is now exclusively used
    • โฌ†๏ธ dependent-versions = "upgrade" is now the default
      • Removed ignore, warn, and error
    • ๐Ÿš€ Cargo.toml's package.publish = false disables release
    • โœ‚ Removed --dump-config in favor of cargo release config
    • โœ‚ Remove --token in favor in favor of more secure ways of authenticating
    • ๐Ÿš€ cargo release is no longer used for recovery, instead use cargo 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"
    • ๐Ÿ‘ dependency.<name>.workspace = true support
    • ๐Ÿ“ฆ package.publish.workspace = true support
    • owners = [] to set crate owners for new workspace members
      • Use cargo release owner to update owners for existing crates
    • ๐Ÿ‘ In addition to shared-version = true, we now support named groups, like shared-version = "foo"
    • ๐Ÿš€ --unpublished flag to automatically release unpublished crates
    • ๐Ÿ”ฆ Expose changes, hook, and commit steps