Skip to content

v0.3.99

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Jun 08:35
· 24 commits to main since this release

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-context in 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) — --exec weaving, autosquash rearrange, fixup -C squash-section handling, merge-commit parent preservation, reflog old-value correctness, abbreviate-commands.
  • rev-parse@{push} via push refspecs, ^{/!...} search, --symbolic-full-name/--bisect ordering.
  • Config / repo-format — unsupported repo-version warn/fail, split-index shared-index writes, dedup of GIT_INDEX_VERSION warnings.
  • Reftable — single-transaction worktree branch ref+reflog writes, GIT_TEST_DEFAULT_REF_FORMAT precedence.
  • 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