v0.2.0
Grit v0.2.0 is a large feature release — 321 commits since v0.1.6 — extending the
grit-lib engine and the grit CLI to cover most commonly-used, non-interactive Git
workflows. Each area below is validated against the upstream Git test suite (tests/).
Highlights
🔏 Signing (GPG + SSH) — new
- New
grit-lib/src/signing.rsandpush_cert.rs(from scratch). commit -S/commit.gpgsign, annotatedtag -s/-u,verify-commit,verify-tag.log/rev-list%G?/%GS/%GK/… andshow --show-signature.push --signedwith HMAC nonce +GIT_PUSH_CERT*env.- Verify chooses format from the signature armor (SSH commits verify even with
gpg.formatunset). - Harness:
t751028/28,t752826/29,t703114/14,t553413/13.
🌓 Sparse checkout
- Cone + non-cone pattern load/save, sparse-directory index entries,
read-tree/checkout materialization. add/rm/mv/statusrespect the sparse specification.- Harness:
t109176/77,t3705/t3602/t1011/t1090/t6428green;t109264/106.
📦 Partial clone / promisor / lazy objects
filter=blob:none|tree:0|sparse|combineon clone/fetch, lazy fetch on touch,backfill/promisor-hydrate.- Harness:
t041038/38,t562010/10,t40679/9,t61102/2;t561644/47.
🪝 Hooks
- Multihook ordering,
core.hooksPath, full v1 hook set wired with correct stdin/stdout/env. - Harness:
t180044/44,t750322/22,t557111/11,t5401/2/3/4green;t5407/t7505improved.
🔀 Core workflows (non-interactive)
checkout/restore/reset,merge,cherry-pick/revert/rerere,statusv1/v2,log.gc/repack/maintenance runwith scheduler backends, incremental/geometric repack, midx expire.- Harness:
t7201-co46/46,t710238/38,t7508-status121/126, cherry-pick family green,
t7600-merge81/83,t7900-maintenance71/72,t6500-gc34/35.
🧩 Submodules
init/update/sync/deinit/status/foreach(non-interactive), gitlink handling.- Harness:
t7400-submodule-basic49→111/124,t740318/18,t740643/70,t740721/23.
🏗️ Foundation & quality
- Repository session/discovery hardening (
t1510109/109,t1517191/191). - Workspace-wide clippy cleanup: ~180
unwrap/expectdeny-lint errors converted to proper
error handling (behavior-preserving).cargo fmtclean;grit-liblib tests 229/0; clippy green.
Scope & known limitations
See docs/v1-scope.md for the full
in-scope/out-of-scope breakdown. Out of scope for now: interactive modes (-p/rebase -i),
complex HTTP auth (Digest/NTLM/Negotiate), fsmonitor, and server-side daemons. Partial areas:
submodule --recurse-submodules checkout, sparse-index lazy expansion (t1092), and some log formats.
Full Changelog: v0.1.6...v0.2.0
What's Changed
- remove plans by @schacon in #760
- Library worktree support and t2402 harness by @schacon in #761
- fix: handle gitfile GIT_DIR in repo setup by @krlvi in #762
- fix: handle diff outside repo by @krlvi in #763
- fix: format rev-parse git paths by @krlvi in #764
- fix: deduplicate commit-tree parents by @krlvi in #765
- fix: honor full log decorations from config by @krlvi in #766
- fix: honor disabled reflog auto creation by @krlvi in #767
- fix: validate loose objects in pack-objects by @krlvi in #768
- fix: handle invalid double-star wildmatch by @krlvi in #769
- fix: avoid duplicate update-ref transaction hooks by @krlvi in #770
- fix: honor long magic pathspecs in add by @krlvi in #771
- Worktree: linked HEAD, submodules, config, and harness by @schacon in #772
- fix: sparse-checkout worktree config and apply (t1091 54/77) by @schacon in #773
New Contributors
Full Changelog: v0.1.6...v0.2.0