Tracking issue — temporary state introduced in 0efc35f.
Current state
The publish-crates job in ci.yml skips two of the four workspace crates on tag pushes:
publish_or_skip krypt-platform
publish_or_skip krypt-pkg
# krypt-core + krypt-cli are blocked from crates.io until upstream
# GitoxideLabs/gitoxide#2603 (gix-stash plumbing) lands. ...
# publish_or_skip krypt-core
# publish_or_skip krypt-cli
Why: krypt-core depends on gix from the mxaddict/gitoxide fork (branch feat/gix-stash) and enables the stash + merge features that only exist on the fork. cargo publish validates the dep manifest against the version published on crates.io (gix@0.83.0), which doesn't have those features, and rejects the publish.
Distribution impact:
- crates.io: only
krypt-platform + krypt-pkg get published on each release tag. cargo install krypt-cli fails on the new version (resolves to last published 0.2.0 binary, missing every change after the fork-switch in 70d8944).
- AUR / brew / scoop / GH Releases: continue to publish the full binary built from the fork. These are the recommended install paths until this is fixed.
Unblocking dep
Upstream PR: GitoxideLabs/gitoxide#2603 — adds the gix-stash plumbing crate to upstream gitoxide. Once merged and released to crates.io with a version exposing the stash + merge features:
Fix steps (when upstream lands)
- In
crates/krypt-core/Cargo.toml, repoint the three gix-related deps from the fork back to crates.io:
gix = { version = "X.Y.Z", features = ["...", "stash", "merge"] }
gix-actor = "X.Y.Z"
gix-worktree-state = "X.Y.Z"
(Pick the gix version that exposes the new features.)
cargo update -p gix to refresh Cargo.lock.
- Restore the two publish lines in
.github/workflows/ci.yml:
publish_or_skip krypt-core
publish_or_skip krypt-cli
- Drop the temporary
cargo-deny relaxations introduced in commit 6cc1b5e:
[bans] wildcards = "warn" → "deny"
- Remove the
allow-git entry pointing at mxaddict/gitoxide
- Cut a new release.
publish_or_skip is idempotent; previously-published platform/pkg at the same version skip; new krypt-core / krypt-cli go through cleanly.
- Close this issue.
Acceptance
Tracking issue — temporary state introduced in
0efc35f.Current state
The
publish-cratesjob inci.ymlskips two of the four workspace crates on tag pushes:Why:
krypt-coredepends ongixfrom themxaddict/gitoxidefork (branchfeat/gix-stash) and enables thestash+mergefeatures that only exist on the fork.cargo publishvalidates the dep manifest against the version published on crates.io (gix@0.83.0), which doesn't have those features, and rejects the publish.Distribution impact:
krypt-platform+krypt-pkgget published on each release tag.cargo install krypt-clifails on the new version (resolves to last published 0.2.0 binary, missing every change after the fork-switch in70d8944).Unblocking dep
Upstream PR: GitoxideLabs/gitoxide#2603 — adds the
gix-stashplumbing crate to upstream gitoxide. Once merged and released to crates.io with a version exposing thestash+mergefeatures:Fix steps (when upstream lands)
crates/krypt-core/Cargo.toml, repoint the three gix-related deps from the fork back to crates.io:cargo update -p gixto refreshCargo.lock..github/workflows/ci.yml:cargo-denyrelaxations introduced in commit6cc1b5e:[bans] wildcards = "warn"→"deny"allow-gitentry pointing atmxaddict/gitoxidepublish_or_skipis idempotent; previously-published platform/pkg at the same version skip; new krypt-core / krypt-cli go through cleanly.Acceptance
stash+mergefeaturescrates/krypt-core/Cargo.tomlreferences crates.io gix (nogit = ...)ci.ymlpublish-cratesstep publishes all four cratesdeny.tomlrestored to pre-fork strictness