Repository navigation
v0.5.20
What's changed
- docs: serving fetches and pushes from grit-lib, with a server example (d23f3c2)
- serve: stream pushed packs to disk, type refusals, add ReceiveHook (ad721e3)
- hooks: run receive-pack hook scripts with GIT_DIR=. (1cabc14)
- fsck: validate objects in a custom primary store (a363027)
- worktree_batch: skip loose compression when staging into a custom primary (8e5f4c4)
- Merge branch 'factory/clone-rss-owned-base' (e71b04f)
- pack index: keep the hygiene scanner able to strip the test module (1f618e3)
- test: keep the 3002-deep ofs chain check against git index-pack (6291596)
- docs: describe the depth-first delta resolver and its memory bound (4bc1f62)
- test: deep branching git repack chains index byte-identically to git (6ae92c4)
- pack index: resolve deltas depth-first per base instead of in rounds (91c1efc)
- Merge branch 'factory/receive-pack-ff-quarantine' (f46d0e2)
- docs: state that denyNonFastForwards only guards branches (fff7813)
- receive-pack: accept fast-forwards under receive.denyNonFastForwards (320ab4b)
- merge_base: make the plain-ODB ancestry walk exact and bounded (7aa76bf)
- Merge branch 'factory/upload-pack-reuse' (ad2d129)
- public-api: regenerate the snapshot in cargo-public-api order (220280b)
- bench: serve a full clone of git.git without a pack bitmap (49da4f7)
- pack-objects: build walk paths only for objects seen the first time (5ea3c3a)
- upload-pack: build packs with Git's serve settings and stream them (c891269)
- pack-objects: keep packed payloads on disk and stream the pack (3bda994)
- pack: decode the offset-to-row table once per pack index (e4d4cd8)
- Merge branch 'factory/blame-merge-queue' (cbdb734)
- docs: describe blame's date-ordered walk and memory bound (3b89849)
- bench: add a merge-heavy blame scenario and refresh the blame baseline (a5286c2)
- diff: intern blame's xdiff lines with LineInterner (4342edf)
- blame: walk suspects in one date-ordered queue that merges per commit (986dcf1)
- Merge branch 'factory/status-clean-tree-speed' (dfd3640)
- Record remote show many-refs benchmark before and after (6cb3c91)
- Classify remote show branches from one tracking-ref listing (1484192)
- docs: describe clean-tree status checks and record the benchmarks (3e0f561)
- status: hash racily smudged entries even when stat matches (2a7b942)
- status: persist the index when that clears racy entries (ea6f987)
- worktree scan: stat tracked paths directly outside Windows (30e48ef)
- worktree scan: check symlinked ancestors per directory in the scan workers (c519756)
- status: drop per-directory path probes from the untracked walk (4f366ac)
- status: trust matching stat regardless of core.filemode and for empty blobs (42b056b)
- refs: let MemoryRefStore iteration callbacks re-enter the store (af07164)
- Merge branch 'factory/fetch-transfer-summary' (de59f6b)
- Show clone's transfer summary on fetch and pull (fbab2cf)
- docs: compile the custom object store repository example (cdf7bb2)
- repo: accept any path naming objects/ in RepositoryBuilder::odb_builder (7968f4d)
- objects: cut tree validation and serialization cost (b204f63)
- examples: create trees and commits through the typed object API (c6e724d)
- objects: validate Objects::write and add typed tree and commit writers (4d27bd5)
- commit: keep the sign of sub-hour negative UTC offsets (3bda42a)
- Merge branch 'factory/refstore-name-validation' (acd9f3e)
- refs: validate transactions the same way on every ref backend (660c4a5)
- Merge branch 'factory/gc-skip-redundant-walks' (4b8c780)
- bench: refresh maintenance baseline after the gc walk changes (55f7c65)
- gc: walk the object graph at most once, and only when a step needs it (60dcb02)
- Merge branch 'factory/clone-pack-rss-1672' (0b8996f)
- revwalk: walk full history from the commit-graph without reading commits (2f66d75)
- bench: cover full-history default-order walks (a23491d)
- Keep literal pathspec lookups under core.precomposeunicode (ceaa8b6)
- Resolve argv pathspecs without reloading config per path (38da725)
- hooks: run scripts through a resolved interpreter and report spawn failures (5794bc4)
- environment: pass captured variables through to hook subprocesses (17c4d71)
- Merge branch 'factory/porcelain-injected-ref-store' (4af3b2a)
- Test porcelain on injected, files and reftable ref stores; document the guarantee (b49a02c)
- refs: route porcelain ref, HEAD and reflog writes through the repository's ref store (8213230)
- docs: prefix lookup cost and range overrides for custom stores (1230662)
- rev-parse: abbreviate with one prefix lookup per id (c76ad4f)
- objects: match object id prefixes on raw bytes in every store (1a4bb73)
- remote: refuse fetch and push on a custom primary object store (9d84c67)
- odb: route bulk staging writes through a custom primary store (a4ab8e8)
- grit-http-server: bound gzip expansion of streamed push bodies (b408791)
- grit-protocol: expose request stream failures of receive-pack (d0a2cc0)
- grit-http-server: stream push bodies instead of buffering them (1f4af44)
- grit-protocol: accept receive-pack request bodies as a stream (379cdd5)
- serve: return the pushed pack without copying it (389e8e5)
- public-api: record ObjectPayloadHasher surface (98972e1)
- pack index: owned bases on delta chains and ObjectPayloadHasher streaming (32bb52e)
- pack index: iterative delta chains, cycle detection, parallel resolve (b8f5a7b)
- pack index: re-resolve delta bases from pack instead of retaining inflated bytes (f7e31a8)
- Keep diff compare keys and interned lines as plain slices (949c4c5)
- Borrow unchanged rows when applying hunks to a blob (14f899a)
- Test restore_hunks against git on many hunks and ident files (96be027)
- Do not store a blob when restoring hunks in the worktree (54d275a)
- Borrow diff lines and intern into a compact id table (b51395c)
- Diff lines without per-line copies in the xdiff pipeline (dcb7096)
- grit-lib: remove public helpers only reachable from coverage sweeps (3b3553c)
- Merge branch 'factory/repack-gc-skip-7655' (ff616ed)
- Fixes #1690: force_recompress disables delta reuse; tighten gc repack tests (707b4f6)
- Fix type-change restage when oid matches and filemode is false (649461e)
- Merge branch 'factory/tag-verify-by-name' (f530ca7)
- tag: verify annotated tags by name in grit-lib (0042d9e)
- Gc repack round 4: deterministic deltas, pack.compression=0, issue #1653 (1cdf6fd)
- Update public-api for PackEnumerateOptions::prefetch_walk_objects (07fc251)
- Fix repack memory by skipping blob prefetch on reuse-only repack (5049f27)
- Stage gitlink-to-file typechanges in tracked-scan add path (c8a9498)
- worktree: cover typed refusals through the public API (d671292)
- worktree: report refusals as a typed WorktreeError (8134813)
- maintenance: remove the flattened fsck wrapper (98cb0fd)
- Fix tracked-scan staging for blob/symlink typechanges with filemode false (cda8b5b)
- Improve grit add perf test failure diagnostics (5ce972a)
- Fix pathspec validation scaling on large indexes (0ac46b4)
- Address review feedback on add pathspec perf (18062a4)
- Fix add perf for many literal pathspecs on large indexes (b67f745)
- Merge branch 'factory/fix-add-hunks-u0' (fba4b9f)
- Merge branch 'factory/branch-list-many-refs' (ad6fad9)
- fix(add): normalize attached -U on grit add --hunks (ed11f28)
- Keep commit_rank_for_walk generation-only without commit-graph (82c7b30)
- Fixes #1689: heap-ordered shared walk for ref --contains (3d95a50)
- bench: record branch and tag daily rows on many-refs around the packed-refs view reuse (5eec086)
- refs: build packed-refs peel snapshots from the files store's cached view (ae3e958)
- branch: skip per-tip peels and thread setup the listing does not use (2972d4e)
- refs: list packed refs through the store's cached packed-refs view (20898d9)
- fix(add): bump stable hunk map keys to add --json v2 schema (74b03d6)
- test(cli): refresh clone network snapshots for clone --json schema (91cdb70)
- test(cli): refresh output snapshots after add --json shape (14eaa1f)
- test(add): expect empty staged_hunks lines on plain add --json (70d6e66)
- docs(add): refresh JSON example and add snapshot for stable keys (46bf52c)
- chore: refresh grit-lib public-api snapshot (18029ed)
- fix(add): always emit staged_hunks and staged_lines in --json (ce47855)
- fix(config): reject extra value on hot-path --unset (c20fd35)
- fix(add): wire -U for hunk staging to match diff context (826511b)
- Fixes #1677: harden parallel loose writes after clone add (b6dd22d)
- Gate repack skip on auto_skip and requested side effects (eeea226)
- Fixes #1690: skip no-op repack in gc and reuse on-disk deltas (e58ab06)
- Merge branch 'factory/fix-1702-windows-status-stat-f8bb' (27cab42)
- Merge branch 'factory/pack-index-memory-3836' (16d15f7)
- Fixes #1702: Windows stat trust on clean status without re-reading blobs (b0559f5)
- Merge branch 'factory/crlf-attr-patterns-1698' (d2e27ff)
- Fix pack index inflight deadlock and SHA-256 thin detection (ef84d05)
- Fixes #1672: bound pack index-pack RSS on HTTPS clone (24dc4ce)
- Merge branch 'factory/fix-diff-path-staged-1703' (ad2ffd6)
- Fixes #1698: route CRLF gitattributes through attributes matcher (da27226)
- Merge branch 'factory/rev-range-count-fast' (6410249)
- Fix populated-tree checkout prefetch and fallback attribute rules (b63c4c7)
- Fixes #1678: stream populated-tree checkout in chunks (e395f1b)
- Merge branch 'factory/gc-repack-perf-1038' (c058701)
- Fix grit diff path limits ignoring staged-only changes (088ca99)
- Fixes #1688: skip non-commit tips in reset orphan walk (59f59de)
- Merge branch 'factory/embedder-errors-1685' (2f61644)
- Fix gc auto-skip: repack when pack holds prunable unreachable objects (b3efd9f)
- Fixes #1038: skip gc repack on single pack; reuse on-disk bytes when repacking (cb551a7)
- Merge branch 'factory/rename-line-table-cache' (be76731)
- Merge branch 'factory/add-sort-index-order-2116' (f38d3b3)
- Merge branch 'factory/fix-1687-merge-continue-autostage' (e12b42e)
- Address review: typed missing-path blame in compute_blame (e81d926)
- Merge branch 'factory/gc-repack-perf-1653' (ed7ead3)
- Docs: note typed embedder error variants in embedding guide (0fad076)
- Fixes #1685: typed errors for work tree, blame path, empty commit, deep parent (d8e4723)
- Merge branch 'factory/fix-add-index-sort-1673' (dba9c63)
- Fix explicit add staging unrelated tracked paths when pathspec matches only untracked files (e60d083)
- Fixes #1622: faster add/commit on deep trees (a8e14fb)
- Merge branch 'factory/rebase-bounded-revwalk-c990' (696d4b1)
- Fixes #1683: cache rename line tables per blob for inexact detection (004b083)
- Fixes #1679: stage-0 path map for add outcome sorting (d728ff8)
- Fixes #1653: gc repack prefetch and skip redundant pack verify (1993c3a)
- Fixes #1653: repack streaming payloads and trusted pack index (296f07e)
- Fixes #1653: speed loose-object gc repack. (f47a72d)
- Fixes #1687: merge --continue auto-stages resolved conflicts (3851013)
- Merge branch 'factory/ci-green-3811' (b2b3a6a)
- Fixes #1673: regression tests for add outcome index-order sort (c03e18e)
- Honor grafts in hide-aware revwalk used by rebase (eb45667)
- Fixes #1668: bound rebase revwalk to fork..tip range (5a985fe)
- Merge branch 'factory/fix-add-quadratic-1674' (ec64fca)
- Fixes #1681: normalize commit author and committer identities (428cc97)
- Merge branch 'factory/fix-1613-switch-windows-perf' (bfb15c0)
- fix(schemas): load clone live contract from v3, not v2 (5b1bbd2)
- fix(ci): complete JSON schema registry and snapshot coverage (8f368ec)
- fix(ci): restore doc JSON schema checks and public-api snapshot (beaac55)
- Fixes #1680: RevListOptions defaults use commit-graph and bounded -n (caaf6f4)
- Fixes #1674: make stage outcome path sort linear in index size (e10d034)
- Run racy content hash after stat drift in switch prepare (df00556)
- Fix switch stat scan collecting all mismatch paths before narrow diff (1d22380)
- Fixes #1613: cut switch prepare metadata storms on Windows (b1f4034)
- Merge branch 'factory/clone-cache-tree-a63f' (d41f277)
- Fixes #1669: bounded rev-walk count for A..B ranges (ae42169)
- Fixes #1676: persist cache-tree on populated checkout and clone (a440048)
- Update public API snapshot for UnmergedConflictMarkers (99aaa52)
- Fix partial grit add during merge conflicts (4b3115e)
- Merge branch 'factory/pickaxe-gitlink-n-1667' (acbaf6b)
- blog: roadmap two results and dogfood mode (cd1d1f2)
- Fixes #1651: parallelize bulk untracked add and trim loose write overhead (77f27fa)
- Fixes #1667: pickaxe -S with -n skips gitlink ODB reads (00f83c8)
- Fixes #1654: partial fetch ref apply on namespace conflict (386262d)
- Merge branch 'factory/fix-1657-ssh-empty-remote' (a92df36)
- Fixes #1656: read one push pack without waiting for stdin EOF (074d7bb)
- Fixes #1657: regression tests for empty SSH remote clone/fetch/push (3452ca0)
- Fixes #1652: reset orphan walk skips moving worktree by canonical path (9becd2a)
- Merge branch 'factory/fix-ignore-reincluded-dir-3783' (393c7fa)
- Merge branch 'factory/ci-green-3701' (dba965b)
- Merge branch 'bench-network-http' (544e01b)
- grit-bench daily: run network scenarios end to end over git http-backend (c13edef)
- test: redact tempfile paths via runtime temp_dir prefix (6e37dfb)
- test: raise root pub mod budget for ident/list_limit/line_range (e755381)
- test: raise root pub mod budget for ident/list_limit/line_range (1a1a333)
- fix: unborn HEAD resolve_ref_name and align clone cleanup test (da1560f)
- test: register network snapshot tempfile redaction after upstream label (0bdd2d8)
- test: refresh grit skill snapshot after main doc updates (a79408e)
- test: apply tempfile snapshot redaction after repo path labels (9a60711)
- chore: drop stale CLI contract limit exceptions for branch and reflog (aaa7a00)
- test: redact tempfile paths in snapshots and refresh reflog output (99114b8)
- docs(clone): add required remote fields to JSON examples (28e2043)
- fix: dedupe canonical ident map entry and repair main rustdoc gates (49aff01)
- fix(merge): exit 0 on --dry-run conflicts per documented contract (2a345b4)
- test: add list_limit module rust doctest for public API gate (a6179f6)
- fix(rustdoc): link exit code slugs to published docs URL (ebf5693)
- fix(rustdoc): qualify notes plan_add/plan_remove intra-doc links (bacd000)
- Fix ignore: directory-only rules skip file paths (c970d54)
- Merge branch 'factory/log-oneline-speed' (4a8382e)
- Merge branch 'factory/fix-diff-default-uncommitted-1655' (8658d34)
- Fixes #1655: default diff list formats use full uncommitted scope (9510469)
- docs: read commits with Objects::read_commit in examples and guides (8cc0174)
- odb: share commit reading through Odb::read_commit and Odb::commit_tree (c1b183f)
- bench: record log page and startup rows before and after (0e41dfb)
- pack: reuse the single local pack across object reads (bae2b3e)
- revwalk: keep retained log pages lean (509e0b3)
- cli: build subcommand arguments only when that subcommand is parsed (31a2f66)
- Merge branch 'bench-scenario-detail' (f89a663)
- grit-bench daily: record every run and how each scenario is measured (62305f5)
- GRIT_TRACE: append the span tree to a file when given an absolute path (c60187a)
- Merge pull request #1647 from gitbutlerapp/readme-verify-releases (8a37368)
- README: how to verify release tags with grit tag -v (8d24c9c)
What's Changed
Full Changelog: v0.5.19...v0.5.20