Rust's http://crates.io has the concept of yanking a fundamentally broken or unusable crate (see https://doc.rust-lang.org/cargo/commands/cargo-yank.html). is that possible in clojars? i accidentally released a version of a library yesterday that is straight up missing files and is unusable as is, so marking it as "do not use" would be nice.
@tcrawley fyi, projects do support version ranges following, for example, means "the most recent but not 1.12.0"
~ took 33s
❯ clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "(,1.12.0),(1.12.0,)"}}}'
Clojure 1.12.0-rc2
user=>
https://maven.apache.org/enforcer/enforcer-rules/versionRanges.htmlYes indeed! Though it is generally not a recommended practice, so I didn't mention it.
Just release a good version with a higher number and mark the botched release as such in the changelog. It doesn't have to be more complicated.
okay
We don't have plans to add a way to yank releases, since we can't enforce that it is only for broken releases or ones containing credentials/private code. Projects don't have a way to specify version ranges, just specific versions, so yanking a prior version will break the build of any project that depends on that version. So @alexyakushev's suggestion is the correct approach.
When I've released broken versions in the past, I tend to: a) note in the CHANGELOG that version is broken b) delete the release from GitHub so folks can't find it in GitHub Releases c) but leave the tag in place (and, obvs, leave the version up on Clojars)