gitoxide is great fun, except for one.little.thing: Releases. They hurt, and I so far as to postpone releases forever.
But just use
cargo release I hear you say, and you are right. Every other crate I release that way and I am mostly happy, but with
gitoxide and its interdependent entangled plumbing crates the single-publish-paradigm is not up to the task anymore.
Three days ago I did yet another semi-manual release and I simply couldn't take it anymore. I am clearly too stupid and too lazy to deal with this mess so I decided to retire a never-used-and-non-functional bash script with a utility which later became
cargo smart-release. It took a bit longer than expected, which kind of was expected ;), but here we are.
Here is the anticipated workflow, straight from the README file:
When developing various crates in a workspace I tend to edit code, and depending on the kind of edit, either increase the patch level, minor version or major version right after, depending on the basic rules of
cargo smart-release --bump minor --skip-tag --skip-publish --execute for this which has the benefit of it automatically adjusting other workspace dependencies when needed.
When ready for relasing a particular crate or set of crates of interest, run
cargo smart-release [<crate-name> ...] to simulate a release. For particularly thorough but error-prone simulations (as in false positives) one could run
cargo smart-release --dry-run-cargo-publish. After evaluating the release procedure and following instructions, one should end up with a fully automatic release of multiple crates. There are various other options that shouldn't be needed in the common case, use
cargo smart-release --help to see them.
It was nice that after some twists I was able to release
cargo smart-release with
cargo smart-release and do so with
minimal zero hassle. Exactly what I wanted.
I will keep dog-fooding it and polish it more over time, ultimately replacing all git command-line invocations with
gitoxide of course and hopefully freeing the dependency tree of
git2 one day.
Until then, you can expect more regular releases of
gitoxide crates from now on.
Have a nice day!
PS: Really, use
cargo release if you don't have issues with it. And if you do, definitely don't write your own but participate in its vibrant and friendly community :).