github Byron/gitoxide cargo-smart-release-v0.5.0
cargo-smart-release v0.5.0

2 years ago

A release with breaking changes as the dependency engine was reworked to handle even more cases
and make future improvements easier.

New Features

  • Respect publish=false in cargo manifest

  • Perform safety bumps without forcing a publish.

    This is what's required to assure that future publishes of such
    transitively dependent crates won't cause downstream breakage the next time the tool is run.

  • Inform about safety bumps more explicitly,
    and generally greatly improve the way the course of action is described.

Bug Fixes

  • Dependency resolution.

    Previously the ordering of crates for release might not have been
    correct due to this issue that is now fixed.

    We need depth-first traversals and previously it would extend skipped
    dependencies, effectively putting them into their own ordering.

    Previously it would restore that ordering, but not anymore, causing
    this bug that was entirely unnecessary.

  • --no-changelog during smart-release is now actually working

    Previously the flag had no effect and changelogs would always be
    generated, possibly stopping the release as at least one of them
    needed manual work.

  • Pin version of clap to beta 5.

    This assures we don't get broken automatically in future.
    Previously that wasn't possible as the dependency of clap,
    clap-derive was also using a beta verion and wasn't constrained,
    hence it would be updated and cause breaking changes with pinned
    versions of consumers of clap.

Changed (BREAKING)

  • changelog subcommand inverts --dependencies to --no-dependencies

  • Remove --no-multi-crate-release support entirely

    As the default is to do multi-crate releases and now having to deal
    with single-create releases reduces maintenance burden.

    The solution to this problem is to not specify version constraints in
    dev-dependencies to workspace crates.

    We also don't check for this anymore, which might be re-added
    at some point if there is demand.This makes dependency resolution similar to cargo smart-release by default and is less surprising.

Commit Statistics

  • 81 commits contributed to the release over the course of 3 calendar days.
  • 10 commits where understood as conventional.
  • 4 unique issues were worked on: #198, #221, #222, #224

Thanks Clippy

Clippy helped 3 times to make code idiomatic.

Commit Details

view details
  • #198
    • Add yet another video (dc8f7ca)
    • Update Asciinema link in readme (b56a31e)
  • #221
    • Add tests which indicate the problem: safety-bump not applied to auto-publishes… (32e1f1a)
    • --no-changelog-preview isn't needed anymore in dry-run mode (1b6a4ad)
    • refactor (aff053f)
    • Inform about safety bumps more explicitly (b806a9c)
    • refactor (23073e8)
  • #222
    • refactor (72bda30)
    • refactor (c8c0dcd)
    • refactor (f7a8847)
    • fix merging of dependency graphs for multiple crates (d332cdf)
    • Revert "FAIL: try to assure that breaking changes are always published in correct order" (f25e7c7)
    • try to assure that breaking changes are always published in correct order (3519f9a)
    • update changelogs prior to release (9a493d0)
    • Respect user selection when re-adding crates for manifest change (72d16bf)
    • dependency resolution (501c1d1)
    • --no-changelog during smart-release is now actually working (5e98e55)
    • replace TODO with runtime logging (f457e65)
    • unify presentation even more (7c32409)
    • adjust expectations in smart-release journey tests (1f96a72)
    • group skipped items by skipped reason (ba28746)
    • unify reporting style (99be2e1)
    • fix reporting of skipped crates, consider adjustment (ac91016)
    • Abort if not a single provided crate would need publishing (478c4ea)
    • improved reporting of skipped/refused crates; abort operation if there is nothing to publish (f9358f1)
    • better reporting of crates that where refused to be published (1d7142a)
    • 'changelog' subcommand change --dependencies to --no-dependencies (59302ae)
    • Properly resolve breaking propagation through the graph (4f25236)
    • multi-round discovery of breaking changes from published packages (dc93e1a)
    • Verify and partially fix journey tests (e53a7f6)
    • remove all now unused items (40f2da2)
    • use Dependency in manifest editor (d5c905a)
    • upgrade to clap 3 beta 5 (2ddc4ed)
    • Show only changelogs that would be published (e20f498)
    • refactor (244431f)
    • Fix reporting of skipped crates (a305232)
    • Respect publish=false in cargo manifest (6d4edfa)
    • more consistent reporting of what would be done (47ce4b0)
    • refactor (369fa93)
    • don't try to change crates that are already at the correct version (561aac3)
    • keep ordering of causes for breaking changes when printing (f4a0970)
    • better safety bumps to be more concise (7c8335a)
    • Perform safety bumps without forcing a publish (7648bf3)
    • refactor (ebec001)
    • inform about the crates seeing a mnifest update too; only show fully-skipped crates (7f2a927)
    • fix:! breaking changes cause intermediate (otherwise skipped) crates to be published. (fb6b909)
    • reverse-bumping for safety works, including publishing :) (5e1713c)
    • track root-cause as well (7f8e720)
    • sketch backwards search for lifting crates to be published (0b018c0)
    • Realize that the search can't be 'flat' (13db698)
    • start sketching backward traversal… (de1d7f7)
    • sumarize manifest updates rather than spelling out each one (8cf00e0)
    • update test expectations and formulate 'the algorithm' (c0693ae)
    • refactor (0bfb1b1)
    • assure changelog picks up safety bumps as well (f2a497b)
    • Collect crates for manifest updates (56ccdd2)
    • Remove --no-multi-crate-release support entirely (07372dd)
    • remove performance measurements (37bacee)
    • refactor (ac85cdf)
    • no newlines in gh traces (afd9b9e)
    • refactor (03c7dba)
    • Simplify use of 'verbose' flag by using log::trace! as well (4dc5f4b)
    • refactor (e256949)
    • refactor (e4ffa71)
    • try to represent safety-bump versions (9f3001f)
    • refactor (6f84e0b)
    • Simple version bumping logic based on what currently exists, with printout (81e5785)
    • fully data-driven presentation of dependency tracking results… (fd53e22)
    • refactor (51a5d36)
    • refactor (b8a5fc8)
    • refactor (10aa1eb)
    • refactor (cfec54d)
    • Remove --only alias and invert --no-dependencies to --dependencies (2f87196)
    • Keep track of skipped crate names for future use (f0a04c7)
  • #224
    • pin version of clap to beta 5 (dfc588b)
  • Uncategorized
    • changelog update (7fcd02e)
    • Adjusting changelogs prior to release of cargo-smart-release v0.5.0 (11f55d3)
    • Release git-hash v0.8.0, git-features v0.17.0, git-actor v0.6.0, git-object v0.15.0, git-diff v0.11.0, git-traverse v0.10.0, git-pack v0.13.0, git-odb v0.23.0, git-packetline v0.12.0, git-transport v0.13.0, git-protocol v0.12.0, git-ref v0.9.0, git-repository v0.11.0, git-commitgraph v0.6.0, gitoxide-core v0.12.0, gitoxide v0.10.0, cargo-smart-release v0.5.0, safety bump 16 crates (0e02953)
    • thanks clippy (7496ba3)
    • thanks clippy (b717323)
    • thanks clippy (c4efd9d)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.