v0.3.99 — what changed since v0.3.94
A very large compatibility & refactoring release: 710 commits, ~175k insertions across 1,823 files. The focus was (1) extracting grit's core into a reusable library, and (2) closing hundreds of behavioral gaps against upstream git (validated against git 2.52.0).
Highlights
grit_lib — library-ification
The bulk of grit's plumbing and porcelain logic was extracted out of the CLI into a reusable grit_lib crate, with domain views (object_store, references, worktree_index, revision, diffing, merging, configuration) and a porcelain/plumbing/prelude layout. Cores extracted this release include: status, blame, diff, apply, am, notes, pathspec, stash, checkout, log, merge, rebase, cherry-pick, revert, tag, and format-patch.
New examples
Added a grit examples crate with simple example binaries showing how to drive grit_lib directly.
Test-tool scaffolding is now gated behind a default-on test-tools feature.
Compatibility fixes (467 fixes across 215+ test areas)
Hundreds of behavioral fixes to match upstream git exactly. Notable areas:
- Interactive add /
add -p/add -i— colorized hunks +diff.diffFilter, no-newline-at-EOF preservation,-U/--inter-hunk-contextin reset/commit/stash-p, hunk-edit via the git editor, width-2 file numbering, wildcard/at-any-depth pathspecs. - Rebase (interactive,
--root,--rebase-merges, fixup/squash) —--execweaving, autosquash rearrange, fixup-Csquash-section handling, merge-commit parent preservation, reflog old-value correctness, abbreviate-commands. - rev-parse —
@{push}via push refspecs,^{/!...}search,--symbolic-full-name/--bisectordering. - Config / repo-format — unsupported repo-version warn/fail, split-index shared-index writes, dedup of
GIT_INDEX_VERSIONwarnings. - Reftable — single-transaction worktree branch ref+reflog writes,
GIT_TEST_DEFAULT_REF_FORMATprecedence. - Sparse-checkout, clone (template dirs, intact-repo-on-failure), filter-branch, hash-object
--path, editor fallbacks, status/porcelain-v2, cherry-pick/revert sequencer state, and more.
Test suite
27 upstream test files ported for portability (BSD wc/head, TERM=dumb, cwd-leak fixes, etc.), plus dashboard/baseline refreshes — all differentially verified against git 2.52.0.
Merged PRs
Full Changelog: v0.3.94...v0.3.99