Skip to content

v0.5.23

Choose a tag to compare

@github-actions github-actions released this 27 Oct 22:27
· 852 commits to main since this release
v0.5.23

What's changed

  • Name the UnrelatedHistories and ObjectFormatMismatch error kinds (20bd7b9)
  • Serialize commit, switch, reset, fetch, push, stash and rebase results (84fdd17)
  • Add Error::kind_name and serialize Error as kind and message (1207626)
  • Give LoadedCommit typed author and committer signatures (ee31461)
  • Type DiffEntry modes as FileMode instead of octal strings (e78886c)
  • Keep unstaged edits when a cross-tree hard reset is cancelled (ab880cf)
  • Record Error::CheckoutRollbackIncomplete in the public API snapshot (a3aa61e)
  • Pack the checkout journal's created paths into one buffer (405e038)
  • Keep the delete spool when a rollback cannot restore from it (278e175)
  • Let Ctrl+C cancel grit switch so the checkout rolls back (f5d875c)
  • Document that a stopped checkout leaves the repository unchanged (a8eb0f8)
  • Roll back the work tree when a checkout fails or is cancelled (c9f4e70)
  • Update grit-lib tests for Git 2.56 and bare-remote current-branch deletes (4e17df0)
  • Advertise object-info=size type, as Git 2.56 does (bd02961)
  • Stage stored paths under their raw bytes (1ade4f4)
  • Keep full files-backend reflog reads as fast as before (0a66e23)
  • Route repo.reflogs() through the repository's ref store (09b96c6)
  • Give custom ODB primaries an empty promisor boundary (bf764cb)
  • Read files-backend reflogs newest first without loading the whole log (180e7c2)
  • Merge pull request #2146 from schacon/detect-copies-source-mode (d915f9b)
  • Merge branch 'factory/typed-not-a-repository' (684152c)
  • Type NotARepository errors with a reason enum instead of a message string (6c22f85)
  • Diff root commits against the empty tree in rebase cherry detection (c597d77)
  • List commits in --markdown for log --graph --oneline (06ef3c2)
  • Give checkout_cli's git commit its identity through the environment (c542ab1)
  • Keep fetch, push and remote tracking refs in the repository's ref store (c3808a8)
  • Keep CI merge status to the fast checks (a953be1)
  • Merge branch 'factory/odb-object-format-mismatch' (8d77e4e)
  • Check injected store formats against the config snapshot open already loads (8634775)
  • Reject injected object stores whose hash algorithm differs from the repository (a96a310)
  • Count path revisions from the fixture HEAD (19cfb4e)
  • Reset the push/refspec branch and clone outside the client repo (60c45e3)
  • Prepare the git.git fixture in area_filter_selects_area (1681979)
  • Fix the ignore/check-1000 and remote/rename daily prepares (06293b9)
  • Unstage large.txt in the add/lines and add/hunks prepare steps (2a25d70)
  • Make the history-rewrite bench scripts portable to macOS (4d09411)
  • Exempt the serve and checkout-stack commands from the daily matrix (833e1ec)
  • Run grit-utils tests one at a time under nextest (7046f8b)
  • Print a blank line between commits in log -p with full headers (0d68a04)
  • Page the log bench with --cursor (ac116ac)
  • Build grit for the tag/tree SHA-256 scenario test (446efa1)
  • Sync MATRIX.md with the scenario registry (6ce575b)
  • Restore the daily plans dropped with the --hunks change (d515910)
  • Merge branch 'factory/branch-merged-tip-dedup' (39a3db1)
  • Update git-compat tests that predate deliberate behaviour changes (b06ce9d)
  • Leave hunkless file diffs out of a fence in --markdown (6b3addd)
  • Release a streamed pack entry's mapped pages as it is read (ea01ab3)
  • Walk each first-parent spine once across tips in --simplify-merges (1a8a597)
  • Decode stored non-UTF-8 paths when deleting and staging (e5a364d)
  • Store reftable reflog time zones as Git does (bd402b5)
  • Fix partial-clone and child-process tests for the current layout (77490c0)
  • Serve object-info only with transfer.advertiseObjectInfo, like Git (707a24e)
  • Ask v2 ls-refs only for the refs a fetch's refspecs can match (bbd05fd)
  • Leave a have commit's trees out of filtered packs (c7ad886)
  • Expect local clone and fetch to hard-link loose objects (e4e9130)
  • Date history_undo's dropped tip now, so git gc keeps its reflog entry (d2d1a71)
  • Run git in each test's own repository, not the crate directory (a1a5339)
  • Keep a rescued pack base's deltas when its own entry is corrupt (ac6d6cf)
  • Merge branch 'factory/status-unreadable-file' (3c22bb0)
  • cli: read the process environment once per run (a8da80b)
  • refs: walk loose refs once in a main worktree (88ce367)
  • refs: resolve each ref tip once in reachability filters (4f89353)
  • tests: register the unreadable tracked file status tests in the integration binary (4f6a285)
  • status: report an unreadable tracked file as modified instead of failing (40439e3)
  • Give linked-worktree handles over injected stores their own HEAD (1a9b008)
  • Write a linked worktree's HEAD and HEAD reflog to its admin dir over injected ref stores (c403804)
  • Document and check the add/add conflict for colliding renames (c5d62c0)
  • Keep both files when a rename lands on a path the other side filled (023793d)
  • Merge branch 'factory/symmetric-range-frontier' (be65377)
  • Merge branch 'factory/log-cursor-short-3da4' (d76c80b)
  • Merge branch 'factory/home-cli-demo' (4b37cdf)
  • Walk A...B down to the merge-base frontier (521bf8b)
  • Exclude every merge base when expanding A...B (4600b5a)
  • Stop the merge-base walk once only stale commits are queued (8b74be8)
  • site: cycle clone, switch and commit examples on the homepage (17bf723)
  • Merge branch 'factory/blame-compaction-placement' (f6dc0e0)
  • Only persist log cursors when the token is exposed (0105876)
  • Document short log cursor APIs in public-api.txt (b3b3976)
  • Shorten grit log cursors and polish graph output (bfaa727)
  • blame: place hunks the way git blame's xdiff does (f4d1335)
  • Merge branch 'factory/write-merge-tree' (6a23514)
  • push: walk history through the commit-graph (5e7a6e8)
  • Document predict_merge versus write_merge_tree and use it in the merge guide (efab400)
  • Add write_merge_tree to store a three-way merge result (bf24dde)
  • Merge branch 'factory/receive-pack-fsck' (fdd72fd)
  • receive-pack: honor receive.fsckObjects and transfer.fsckObjects (02be765)
  • fsck: per-message policy for checking received objects (44f9e34)
  • Report source modes on copies when no source tree entries are given (ca1b498)
  • Merge branch 'factory/revs-count-paint' (0c5982a)
  • Merge pull request #2137 from schacon/ignore-pattern-list (1c964bc)
  • Document ignorecase staging speed on the issue's 48k-file tree (8bcf7d7)
  • Benchmark add and add -u with the macOS path config daily (55650bf)
  • Test ignorecase staging of case-only renames and its cost on 48k files (ed6c01a)
  • Prune untracked directories against literal pathspecs without allocating (374ac90)
  • Skip the precompose lookup for ASCII worktree paths (77bba63)
  • Answer exact ignorecase spellings from cached listings without allocating (75322c8)
  • Merge branch 'factory/revs-count-paint' (ec05183)
  • Document single-walk range counts and record their benchmarks (1224dcf)
  • Count revision ranges with one hide paint instead of per-commit ancestry checks (8ddcb1d)
  • Add IgnorePatternList for matching single paths against an exclude file (cf774fc)
  • Strip at most one trailing CR from ignore file lines (d4988e6)
  • Merge branch 'factory/local-transport-reachable' (c120c8f)
  • Merge branch 'factory/windows-verbatim-paths' (ecc581c)
  • Store plain Win32 paths on Repository instead of verbatim \?\ paths (a208cf7)
  • tests: register local_transport_reachable in the integration binary (02db781)
  • transfer: send only reachable objects over local and file:// transports (5383045)
  • Merge branch 'factory/from-process-options' (5ebe1d9)
  • Open user repositories with from_process in examples and docs (8295418)
  • Add RepositoryOptions::from_process for embedders that must match git (97e8010)
  • Merge branch 'factory/push-tip-boundary' (4da3f96)
  • Record one-commit push benchmarks over ssh, git:// and HTTP (03e6744)
  • Seed push thin-pack bases from edge commits, not every advertised tip (3e08d93)
  • Look up few pack objects instead of scanning the whole index (5ea72e5)
  • Buffer git:// and ssh transport reads (7c200d5)
  • Open pack bitmaps without reading every pack index (4d0ac8e)
  • Compile commit filters without UTF-8 cache or CPU probing (3681c17)
  • Reuse traversal bytes for bounded filtered log walks (4deaa78)
  • Merge branch 'factory/pre-push-hook' (8249b71)
  • push: ignore SIGPIPE while pushing so a hook that skips stdin cannot kill grit (ba25c79)
  • docs: describe the pre-push failure JSON inline and refresh the skill snapshot (6fe2a17)
  • push: run the pre-push hook before sending anything (76a297b)
  • hooks: resolve a relative core.hooksPath against the work tree top (12ac726)
  • Merge branch 'factory/grit-checkout' (1dea9fd)
  • Register trailer compatibility tests in consolidated suite (d21cd35)
  • List the trailer comparisons in the testing coverage table (a7dbe42)
  • Simplify sign-off and cherry-pick trailer handling (f5868c6)
  • Simplify interpret-trailers parsing and placement (f232da4)
  • Compare trailer rewriting with git across placement, config and output options (d5804f3)
  • Don't mark tests that are already #[ignore] as full-only (f5ab536)
  • Keep the checkout stack's tests within the fast run and the test guards (544470d)
  • Count a branch a worktree is rebasing or bisecting as checked out there (2bf39ca)
  • Merge a path one side turned between file and directory cleanly (2af3a57)
  • Share server branches with checkouts: graft log, projection and grit pull (61db7de)
  • Read reflogs that are not UTF-8, and append to them instead of rewriting (5d551e1)
  • Give commits made with git change ids; accept rebases that keep every commit (5df29fa)
  • Integrate moves you off landed work instead of replaying it (76e1535)
  • Guard served target branches; integrate and slices take turns and move the worktree (ab5ffa8)
  • Checkouts fetch and push only snapshots; refresh runs in grit-lib (45e03bd)
  • Make server check-ins race-safe and grafts keep the target's work (c99b905)
  • Rebase pulls keep local commits under a merge of upstream (a6f1dae)
  • Add grit checkin, integrate and slice; grit pull refreshes checkouts (048f2e1)
  • Check in, integrate and slices for snapshot checkouts (805c9f5)
  • Add grit checkout: snapshot checkouts from grit serve (0fd4b00)
  • Show resumable bundle transfers in grit clone and grit push (70e8a08)
  • grit serve: background clone bundles and a resumable push endpoint (33f6eb2)
  • Resumable transfers: bundle-uri clones and TUS push bundles in grit-lib (b7273fb)
  • Sign in to grit serve in the browser with email and password (35eaceb)
  • Sign in to grit serve hosts with grit auth (a21fc18)
  • Send credential helpers protocol and host, not the request URL (1b3a8e8)
  • Add grit serve: token-authenticated smart HTTP server with a web view (5214b06)
  • Keep auth_logout_cli off the macOS keychain (76265be)
  • Cache directory listings for ignorecase spelling lookups (159bc77)
  • path_validate: skip .git alias checks for names that cannot spell one (0f5bea2)
  • path_validate: treat git~1 followed by spaces, periods or a stream as .git (4d0adb3)
  • Register the index lock test in the integration test crate (c557270)
  • Take index.lock before stash, reset, switch and restore touch the worktree (01e5937)
  • Split tests into a fast default run and a nightly full run (385ebcb)
  • Build each crate's integration tests as one test binary (3f56865)
  • CI: run every test with nextest, keep caches fresh, run test-threaded nightly (d86a316)
  • Run workspace tests with nextest in make test and the gate (633b231)
  • Keep Git's background maintenance out of reset and commit unit tests (806730a)
  • Stop a transport_path test from moving the whole test process (bd97831)
  • Rotate filters through the rev-list option sweep; keep the full product opt-in (2a90799)
  • Reuse the built grit-http-server in grit-cli tests instead of rebuilding it (0e2decd)
  • Drop legacy_examples_build: cargo test already builds the examples (004f20a)
  • Lock heavy-disk tests with File::lock instead of flock(1) (c2d0497)
  • Route new pack-index, loose-path and SHA-1 uses through their abstractions (ccced87)
  • Fix tests and checks that fail on main (e099381)
  • Merge branch 'factory/revs-graph-range' (6be9ffe)
  • Record revision range count benchmarks and regression coverage (d05c3fb)
  • Bound graph-backed revision counts by excluded ancestry (567b2c3)
  • Merge branch 'factory/site-deploy' (f4803b5)
  • site: upgrade Next.js to 16.4.3 (1e4662d)
  • docs: drop rustdoc link to a feature-gated method (6d8defc)
  • Merge pull request #1233 from jay23606/fix/1229-markdown-mode-rename (b6f94d8)
  • Merge branch 'factory/startup-relocations' (ad7f510)
  • Record startup regressions in the reviewed binaries (bd96ae0)
  • Keep GNU installers on the stock artifact (3f92a6b)
  • Ship an optional x86_64 GNU RELR artifact (b0171ab)
  • Measure PIE startup and preserve GNU loader compatibility (edb77eb)
  • Merge branch 'blog-since-0-5-0' (d407636)
  • blog: what grit shipped since 0.5.0 (13c3db5)
  • Merge branch 'factory/ntfs-path-1699' (17fbe0b)
  • Review: update public-api snapshot; fix local push policy ODB lookup (23fb9ba)
  • Fix Windows NTFS path validation on clone/checkout (362385d)
  • Fixes #1933: enforce receive policy on local-path push (7348842)
  • Share C-style quoted-path decoding across parsers (b3a1804)
  • Merge branch 'factory/blame-pack-memory' (58029b7)
  • Record ranged blame integration validation (c14e584)
  • Bound retained pack readers during ranged blame (11c4222)
  • Bound pack residency during ranged blame (49a6a4a)
  • Record isolated branch snapshot performance (c4ba99f)
  • Record environment snapshot lifetime and memory validation (ebf56c2)
  • Record branch JSON timing and memory comparisons (a862270)
  • Share captured variables across environment snapshots (b83d142)
  • Record controlled branch inventory benchmarks and regression evidence (8da87c4)
  • Record branch inventory timing and memory comparisons (436be9b)
  • refs: preserve packed-ref order when building caches and validate scan boundaries (f90a8a1)
  • refs: fall back to a whole-file scan when a sorted packed-refs range is out of order (df2b72a)
  • branch list: stop re-parsing config and reopening the ref store per listing (c45a1a6)
  • Merge branch 'factory/sirocco-inflate' (1306f22)
  • diff: preserve revision errors with pathspec files (1c4fdec)
  • diff: make grit diff a thin layer over resolve_diff_request (d020c90)
  • diff: resolve diff operands in grit-lib with typed errors (f5327e2)
  • Evaluate Sirocco decompression while retaining flate2 (ca37a31)
  • Document approved log statistics tradeoff and review timing checks (0d44b89)
  • Record log statistics performance and regression measurements (4df7daf)
  • Reduce log statistics tokenization and duplicate diff work (06ec2a1)
  • Avoid materializing packed refs during branch rename (157db97)
  • Reuse parsed ancestor links for symmetric revision counts (a278793)
  • Record controlled regression benchmarks and streaming guards (d2f0200)
  • Repair daily benchmark operations and honor minimum sample counts (a999058)
  • Track the interesting push frontier without rescanning queued refs (35b0906)
  • Validate commit pathspecs without staging a discarded index (6c09c2e)
  • Avoid hashing size-changed streamed blobs twice (8b6fc51)
  • Merge branch 'factory/stash-pop-memory' (6be1920)
  • Bound cached pack descriptors under file-limit pressure (eff4337)
  • Record bounded-log memory and clone measurements (29610c8)
  • Bound tag peeling memory and pack imported clone refs (300656c)
  • Preserve raw path identity in sparse stash apply (b747e73)
  • Reduce stash apply memory on wide trees (3dbd437)
  • Protect sparse reset cleanup from replaced ancestors (5ea1015)
  • Measure sparse reset and switch at monorepo scale (a08eab7)
  • Keep unchanged sparse trees opaque during reset and switch (aac0646)
  • Bound tree metadata retained during diffs (9e6a6be)
  • reset: record bounded orphan-report benchmarks (ea7901d)
  • reset: document advisory orphan counts and stabilize benchmarks (c90c90f)
  • orphans: end the left-behind walk by commit date without a commit-graph (3048c54)
  • grit-bench: add reset/undo-commit@git-git daily scenario (78b4c0c)
  • tests: index pack_write_parallel packs in a scratch repository (ebef753)
  • Negotiate atomic transactions for wire pushes (e98de8a)
  • Preserve tracked edits from successful rebase exec commands (3c1a41e)
  • Reduce mapped pack-index probes for short history walks (aa19642)
  • Track originating paths through affix-only blame renames (b4e048f)
  • Fix parallel worktree symlink comparisons (02e8900)
  • Reuse aggregated line weights for inexact rename detection (b8394eb)
  • Report completed rebase HEAD transitions (d989c8f)
  • Move fsck diagnostic summaries into grit-lib (d99b149)
  • Preserve available promised objects during maintenance (80dc322)
  • Keep partial-clone maintenance offline (1532750)
  • Record filtered range count timing and memory comparisons (7cc7979)
  • Use commit graphs for filtered revision exclusions (9f0e675)
  • Record filtered revision count timing and memory comparisons (7096f3a)
  • Count filtered revisions in one pass without retaining commit maps (5113860)
  • Merge branch 'factory/midx-memory' (09fd2e0)
  • Merge branch 'factory/branch-delete-errors' (e6b9532)
  • Bound multi-pack-index preparation memory (cb8909a)
  • Remove unused storage-layout I/O adapters (c7cf2c4)
  • Clarify checked-out branch deletion error contract (aa0ffbc)
  • fix(markdown): show mode and rename info for hunkless file diffs (c7b0250)

What's Changed

  • perf(revwalk): two-sided paint for ahead/behind and hidden-commit checks by @schacon in #1643
  • README: how to verify release tags by @schacon in #1647
  • fix(markdown): show mode and rename info for hunkless file diffs by @jay23606 in #1233
  • Add IgnorePatternList for matching single paths against an exclude file by @schacon in #2137
  • Report source modes on copies when no source tree entries are given by @schacon in #2146

New Contributors

Full Changelog: v0.5.15...v0.5.23