Now that #44 is functionally closed (krypt uses a personal fork at mxaddict/gitoxide@feat/gix-stash), we owe the upstream a PR so we can switch back to a crates.io release.
Fork state
- 8 commits on
feat/gix-stash covering scaffold → list → push → pop → semantic-fix → tests → CHANGELOG
- New crate
gix-stash (version 0.0.0)
- Wired into top-level
gix as the stash feature
- 14 integration tests passing
#![deny(missing_docs)] clean, -D warnings clean
MVP scope shipped
stash_push — captures WT (not just index) + resets WT to HEAD + removes untracked when include_untracked
stash_pop — real 3-way merge via gix_merge::tree, conflict-preserving ref drop, parent[2] untracked restore
stash_list — reflog walk newest-first
Pre-PR checklist
Long-tail (probably reviewer requests)
- Implement the rest of the operations (
apply, drop, show, branch, autostash) — currently deferred. Upstream may not accept stash as a 3-op crate.
- Porcelain wrappers in
gix::Repository (stash_push, stash_pop, stash_list)
- Convert the test fixtures to upstream's archive-tarball format
Why this matters
Until the PR merges (and gix crates.io pulls in stash), krypt-bin builds from a git dep — breaks cargo install krypt-cli from crates.io (it can't resolve a git-sourced transitive dep). Distribution channels (AUR, Homebrew) currently work because they're source-build pipelines.
Related: #37 (krypt crate name on crates.io).
Now that #44 is functionally closed (krypt uses a personal fork at mxaddict/gitoxide@feat/gix-stash), we owe the upstream a PR so we can switch back to a crates.io release.
Fork state
feat/gix-stashcovering scaffold → list → push → pop → semantic-fix → tests → CHANGELOGgix-stash(version 0.0.0)gixas thestashfeature#![deny(missing_docs)]clean,-D warningscleanMVP scope shipped
stash_push— captures WT (not just index) + resets WT to HEAD + removes untracked wheninclude_untrackedstash_pop— real 3-way merge viagix_merge::tree, conflict-preserving ref drop, parent[2] untracked restorestash_list— reflog walk newest-firstPre-PR checklist
cargo-smart-releasemetadata if missingLong-tail (probably reviewer requests)
apply,drop,show,branch, autostash) — currently deferred. Upstream may not accept stash as a 3-op crate.gix::Repository(stash_push,stash_pop,stash_list)Why this matters
Until the PR merges (and gix crates.io pulls in stash), krypt-bin builds from a git dep — breaks
cargo install krypt-clifrom crates.io (it can't resolve a git-sourced transitive dep). Distribution channels (AUR, Homebrew) currently work because they're source-build pipelines.Related: #37 (krypt crate name on crates.io).