Repository navigation
v0.5.17
What's changed
- reftable: typed ReftableError instead of string errors (f9e3b92)
- fix(grit-bench): harden remote daily fetch/pull/push benchmarks (3b1c4ba)
- ci: serialize workspace test links to avoid lld bus errors (a4e5e07)
- test: avoid TreeSha256 false positives in hash guard (098ab34)
- fix(cli): remove duplicated revert module and keep argv order (8aac80f)
- fix(cli): address review on branch, fetch depth, and revert order (a1285d1)
- docs: extend grit skill and tutorial for remote workflows (96b8857)
- Merge branch 'factory/ci-green-3209' (31aa4ac)
- fix: remove duplicate operation key in canonical-modules.toml (63d6ee1)
- fix: validate every grit revert revision as a commit (cf804cf)
- test: refresh skill and revert CLI snapshots (c191c37)
- refs: recheck packed-refs freshly before creating refs (544d7f8)
- bench: record branch and tag daily rows on many-refs before and after (7f23ee8)
- refs: map large packed-refs files instead of copying them (0fb1774)
- refs: create refs without loading every ref and reflog (f84f544)
- fix(pull): drop operation autostash after conflict-free abort restore (1abc43c)
- fix(pull): review — autostash on errors, dry-run, path remotes, branch API (3017491)
- feat(pull): explicit refspecs, --autostash, --check, and shared fetch flags (3a988dc)
- Merge branch 'factory/revert-no-commit-3187' (cb1f717)
- Refresh CLI skill output snapshots after main rebase (0c9fa5d)
- Update grit-lib public-api snapshot for push flags (33aa49e)
- Sync json_output tests with commit and merge JSON shapes (31cca92)
- Fix follow-tags for custom ref destinations and restore push planner (af279e0)
- Follow-tags: commit-graph ancestor checks instead of full walk (e56a209)
- Address push review: upstream JSON, follow-tags, push-options (75bee3e)
- Add grit push -u, --atomic, push options, and --follow-tags (ca92528)
- feat: wire grit pick --continue, --abort, and --skip (027c55c)
- fix: replay sequence start state, continue ordering, and mainline messages (d7b5138)
- fix: preserve HEAD when continuing a no-commit revert sequence (e553775)
- Address revert review: revision range order and replay created records (91acca9)
- Merge branch 'factory/fetch-all-3010' (bc829b6)
- Merge branch 'factory/pick-revert-status-3189' (bd3775b)
- test(fetch): refresh fetch_prune snapshot for prune output (f4ed9de)
- fix(fetch): address Bugbot CLI refspec and dry-run findings (9092c4f)
- feat(fetch): add --all and RepositoryRemotes::fetch_all (5a71f1e)
- fix(branch): rename positional OLD, upstream preview, and flag guards (6f24300)
- replay: check empty continue before advancing sequencer (4f9ea23)
- replay: Grit merge-revert wording and continue fixes (3758624)
- status: expose pick/revert operation hints for Git sequencer state (ec3e6ef)
- Merge branch 'factory/perf-pick-one' (95af83e)
- Merge branch 'factory/ci-green-3128' (89f1ea8)
- fix: daily headline roadmap table length and push_plan rustdoc (5d18b6b)
- fix: apply force-with-lease to delete ref updates (c250d13)
- grit push: force-with-lease and --force in push planner and CLI (301fe03)
- Merge branch 'factory/status-clean-speed' (d8ab763)
- test: raise root pub mod budget for new grit-lib modules (ed8da7d)
- fix: reject embedded newlines in --author values (781931e)
- fix: commit dry-run staging uses real blob oids (d226032)
- fix: add module doctests for operation and repo_relpath (0daa61c)
- fix: restore daily scenario registry entries and CI doc checks (06b9044)
- fix: drop unused mut in fetch_deepen daemon helper (51bf91f)
- fix(fetch): deepen-relative framing and review follow-ups (c9721a5)
- docs: update public API snapshot for FetchDepth (88feeeb)
- feat(fetch): shallow depth, deepen, and unshallow (9d8d6ce)
- status: reset the walk's ignore matcher per directory task (0b21618)
- docs: describe how the status untracked walk is parallelized (d843816)
- status: test the split untracked walk (33bd983)
- worktree scans: fewer allocations and cheaper sorts (d4302ba)
- status: split the untracked walk below the top level (b70a630)
- status: cut per-entry allocations in the worktree scans (dfc3928)
- bench: restore status/paths and status/renamed matrix registrations (80df2cb)
- tests: rustfmt the wide-pick replay tests (b680361)
- docs: record the pick/revert/merge apply-path speedup and refresh hot-paths baseline (77e1f26)
- diff: trust the scan's lstat for clean entries in the dense worktree pass (c002274)
- pick/revert: write the merge checkout index once, keeping fresh stat rows (8b1d8f3)
- merge_trees: index touched and sparse paths by prefix instead of scanning them (48bdb09)
- Merge branch 'factory/revert-sequence-3025' (f2f316c)
- Merge branch 'factory/fetch-fetchargs-3008' (ecd62ff)
- Merge branch 'factory/branch-mutation-3001' (ef8ab4a)
- chore: fmt remotes imports; sync public-api.txt (114bbcf)
- fix(fetch): scp remote DWIM, rejected output, restore pull docs from main (1d45127)
- fix(fetch): dry-run classify via quarantine ODB; update prune snapshot (ce80f4c)
- fix(fetch): review — tag dest rules, dry-run, trailing flags, tests (1a5dc52)
- fix(gate): daily fetch matrix, rejected-fetch tests, and layout map (2916c8d)
- fix(rustdoc): repair intra-doc links blocking workspace doc (74f56b7)
- feat(fetch): shared FetchArgs, refspec CLI, and fetch JSON v1 fields (b023363)
- Address revert review: topo range order, ReplayCreated, Grit merge messages (7c5501b)
- grit revert: multi-commit sequences, mainline, and continue/abort/skip (7928903)
- cargo fmt (73fcc03)
- public-api: WtStatusState.grit_replay_sequencer field (218119a)
- replay_sequence: abort-safety, no-commit empty compare, status hints (48bb8bd)
- Fix guide_replay_conflicts clippy; document commit JSON change_id field (37c9e6f)
- replay_sequence: ReplayCreated records and maintainer steering (684a526)
- grit-lib: fix replay sequence abort, no-commit, and git opts (e80f51b)
- docs: fix rustdoc, pull schema docs, and module doctests for gate (13bf6b9)
- grit-examples: use public index handle in replay conflicts guide (f35fda9)
- grit-lib: pick/revert sequence engine that stops on conflict (f6ebf41)
- fix(branch): usage JSON for delete --force, restore upstream API (24ec6b9)
- fix(branch): review — force-delete usage, -M args, upstream dry-run validation (4699f7b)
- feat(branch): create at start, track, upstream, rename, and force-delete (c8491e7)
- fix(pull): replay parallel merge roots onto rebased mainline (93c51c2)
- fix(pull): rebase merge side branches and daily pull/rebase verify (61027aa)
- feat(pull): rebase integration via history engine and pull --rebase (925fdd1)
- Add grit tag --verify CLI (98edf6c)
- Update grit-lib public-api snapshot for push plan API (4583b6e)
- Apply configured negative push refspecs as exclusions on the plan (551c0de)
- Fix push review blockers: JSON fields, remote DWIM, matching refspec, src (0fdbfb2)
- Fix push command doc JSON field table for schema CI (7a415cd)
- Sync push JSON schema with schemars output (f9419c9)
- Add grit-lib push plan and grit push refspecs with dry-run (6d072ec)
- ident_resolve: drop test-only identity helpers and fold the loose committer chain (a1f952a)
- Merge branch 'factory/log-refs-config-dedupe' (f7dee3a)
- Merge branch 'factory/branch-rename-2999' (da0e302)
- Merge branch 'factory/push-plan-3080' (74b63dd)
- Align push command JSON field table with PushOutcome schema (61025f1)
- Route branch-rename HEAD retarget through repository RefStore (ab29913)
- Address branch-rename review: atomic reflog txn, validation order, case-only refs (bd8568f)
- grit-lib: branch rename with ref transaction, config, and worktree HEADs (945cb3d)
- refs: parse core.logAllRefUpdates in one place (1493b64)
- Sync push JSON schema and PushRefSpec src_ref test fixtures (67039e2)
- Wire push plan into main after rebase (799a33a)
- Rename push CLI helper to satisfy transport hygiene guard (57a3601)
- Fix push matching default, literal remotes, and config refspec mapping (6cfec79)
- Update grit-lib public-api.txt for push_plan surface (eb77aa2)
- fix(merge-check): check UX, benchmark git argv, baseline, rebase gate prep (222c8cf)
- fix(merge-check): benchmark git shell quoting, lib driver, review blockers (dc4391f)
- feat(merge): add in-memory merge --check prediction (97f8671)
- fix(merge): review — branch/continue conflict, label before finish, snapshots (2890920)
- feat(cli): grit merge --continue with docs and status hints (f1645a5)
- feat(merge): add continue_merge to finish in-progress merges (b218a7b)
- grit-lib: restore branch inventory bench and coverage hooks (c3df07a)
- grit-lib: match Git subject whitespace and empty messages (fec7ee0)
- grit-lib: fix branch inventory upstream, subject, and Names sort (4f99376)
- Merge branch 'factory/commit-p1-date-tz-3079' (7f24b0d)
- merge: restore integration outcome mapping after rebase (78a2669)
- pull: preserve main API while applying integration fixes (7f0fbe6)
- pull: resolve and integrate the upstream in grit-lib (c4945b4)
- merge: compare-and-swap the branch move through the ref store (c0fcfcc)
- branch_tracking: map the upstream through the remote's fetch refspecs (3e923e4)
- commit: normalize --date timezone suffixes like Git (d7f6a9a)
- commit: P1 flags (--date, --trailer, signoff, -C, signing) (aacd999)
- Use canonical config::ident import in grit commit CLI (fd564ef)
- Add canonical map entries and regenerate public-api snapshot (706a930)
- Fix commit review blockers: message stripspace, post-commit, author parse, amend author (af48b22)
- commit: message file, author override, and no-verify hooks (ed50610)
- tree_sha256: do not double-qualify nested missing submodule paths (f37100e)
- Merge branch 'factory/version-sort-fix-3069' (17364c0)
- Merge branch 'factory/ci-green-3085' (2df9237)
- fix: rebase integration after origin/main (056cccf)
- chore: refresh dashboard baselines at branch HEAD (7ba2aff)
- fix: path-scoped commit dry-run preview and CLI review items (8298dcb)
- Polish: dry-run staging, hostile path validation, docs, schemas, baselines (fdb97b8)
- Workflow test, commit/add dry-run stack, and skill docs (9a20664)
- fix: add dry-run without ODB writes and pathless -u unmerged resolution (9428765)
- add: -u/--update, --dry-run, and path lists in stage outcome (40a801a)
- fix(ci): restore main CI (tag tests, rustdoc, pull docs, coverage install) (bb840e9)
- grit-lib: fix version:refname sort and ref query edge cases (3a9cf27)
- Merge branch 'factory/perf-log-all' (c78aa9c)
- Merge branch 'factory/commit-dry-run-3068' (6491cea)
- Merge branch 'factory/switch-dry-run-overwrite-3cb0' (c67f607)
- Move commit parents into the walk cache unless retaining (4b8f01b)
- docs: rev-list early stop at any limit and retain_commit_data (d0db4c7)
- Reuse the walk's parsed commits when rendering grit log (00d78e3)
- Stream default-order --max-count walks at any limit (fb33b6a)
- fix(grit-cli): restore markdown change-id output for history operations (07c964c)
- switch: typed WouldOverwrite errors and --dry-run (6ce589d)
- Merge branch 'factory/remote-refs-query-662d' (825ea13)
- Update grit-lib public API snapshot for remote ref query (cdbb5cc)
- remote refs: empty ls-remote pattern matches nothing (c326833)
- remote refs: shared ls-remote query sort, patterns, and limit (e977d58)
- Merge branch 'factory/fetch-named-fetch-head-fb09' (2cdace9)
- Merge branch 'factory/branch-mutation-typed-errors' (03e4020)
- commit: P1 flags on origin/main without #2810 (04ef887)
- docs: clarify fetch_source is set by Remote::fetch (e122dec)
- fix: set fetch_source for named Remote explicit fetches (0f65cf2)
- grit-lib: branch create/delete/upstream with typed BranchError (62b4be9)
- Merge branch 'factory/fetch-refspec-resolution-3007' (65b1000)
- Update grit-lib public API snapshot after main rebase (29a34bb)
- Restore immutable FetchOptions on public fetch progress APIs (a9b1672)
- Address fetch refspec review: mixed refspecs, HEAD/OID, FETCH_HEAD, HTTP tests (7d26d81)
- Update grit-lib public API snapshot for fetch refspec types. (ccf3f5c)
- grit-lib: typed fetch refspec resolution for explicit refspecs (f3a5b45)
- Merge branch 'factory/ci-green-3046' (e340995)
- Address review: preserve merge/pull v1 schemas and fix skill snapshot (c6a7e0f)
- Add shared operation conflict model and merge JSON v2 (cb9a92f)
- Merge branch 'factory/blame-walk-speed' (1eeea6f)
- fix: advance harness clock for commit-tree in DAG builder (bbb77e6)
- fix: Windows lone-blob scan types and fixup git history oracle parity (19d1dff)
- tag: force, message file, positional target, and dry-run (1aafaa3)
- Merge branch 'factory/ref-query-listing' (613453a)
- docs: describe how blame skips unchanged history (c65e78f)
- blame: walk first parents without retaining trees or full commits (199d72b)
- objects: stop tree entry lookup at the entry's sorted position (ef6bc84)
- pack: create the single-pack reader's inflater on first use (3a133ab)
- grit-lib: add shared ref query listing (sort, patterns, limit) (eeaacdd)
- pack-bitmap: read only the pack trailer when validating a bitmap (625a993)
- revwalk: classify first-parent ancestry with one two-sided walk (bab71c7)
- fix(pull): do not implicit-upstream when merge config unset only (1fcd1d9)
- fix(pull): pull.ff=false, upstream default, schema and docs (6220b90)
- feat(pull): lib pull engine with ff-only and pull.ff config (0e32ed0)
- chore: refresh public-api snapshot after rebase onto main (e92a740)
- fix(restore): match git --merge for add/add and binary conflicts (70dbdf0)
- docs(public-api): record restore conflict error variants in prelude (93270aa)
- feat(restore): add --ours, --theirs, --merge, and --conflict for unmerged paths (4439cd9)
- bench: hash-after baselines and hashing performance docs (b962942)
- test: expect intent_to_add in add JSON schema keys (5c56eff)
- fix: adapt intent-to-add empty blob to hash_object Result API (acc87b9)
- fix: include intent-to-add paths in add --markdown output (4418563)
- fix: intent-to-add empty blob uses repository hash algorithm (2fab782)
- add: -N/--intent-to-add and -f/--force for staging (eb221f5)
- Merge branch 'factory/tree-sha256-tag-claim' (e2770e1)
- chore: withdraw redundant change-id API; fix already on main (63352e1)
- Merge branch 'factory/add-update-dry-run-2807' (60805b4)
- chore: rustfmt hash_collision_cli after hash_object API change (d86342b)
- fix: pathless add -u removes unmerged paths deleted in worktree (28721db)
- fix: add dry-run without ODB writes and pathless -u unmerged resolution (5cabda2)
- add: -u/--update, --dry-run, and path lists in stage outcome (ff8d796)
- chore: map repo_relpath in canonical-modules.toml (092d27e)
- chore: refresh grit-lib public-api snapshot for quote_c_style_bytes (06a29b2)
- Add tree-sha256 tag header codec in grit-lib (1552a76)
- test: fsck --strict for sha1Collision CLI exit code (93562c5)
- Merge origin/main into factory/checked-object-hash-2718 (b556f9b)
- fix: rebase fallout for fallible hash_object API (47ce4a5)
- bench: use repacked pack for hash index-pack scenario (b6ea6d6)
- hash: propagate HashCollision through copy detection and thin-pack fix (296727d)
- hash: make object-id hashing fallible and collision-checked (8f7e831)
- Fix SHA-1 ingestion for SHAttered blobs (Git-compatible object ids) (8854c0d)
- Merge branch 'factory/empty-subtree-1413' (f9807dd)
- Fix push --delete --json reporting branch as --delete (f8c0b9c)
- Fixes #1413: omit empty subdirectory entries from merged trees (1170481)
- test: move add FIFO CLI regression to grit-cli and fix JSON field (66793ea)
- fix: skip FIFOs and sockets in untracked scan and add (f23ea01)
- fix: hash all regular-file modes and unify stale-cache worktree diff (aeecc29)
- fix: pass --repo to tree-sha256 in golden generator (5c8b790)
- Review: public-api snapshot and trailing-slash symlink pathspecs (bcb18b8)
- Fixes #1403: reject pathspecs beyond symlink directories (c0f398a)
- Add tree-sha256 content digest in grit-lib (44b47ee)
- Fixes #1401: materialize empty tree on commit write path (88864ff)
- Merge branch 'factory/non-utf8-gitlink-checkout-2963' (1738984)
- Merge branch 'factory/diff-no-newline-eof-1402' (9ed2ebb)
- fix: Bugbot non-UTF-8 path regressions in checkout, status, and restage (be53380)
- fix: decode stored paths for non-UTF-8 gitlink checkout additions (f6ea5b9)
- Fix non-UTF-8 checkout deletions in checkout_between_trees (24d093b)
- Fix review blockers for non-UTF-8 paths (injective encoding, restore, tests) (049a4a9)
- Fix non-UTF-8 path handling in status, diff, add, and clone (4bc882c)
- fix: resolve rustdoc trait method links in site check (8e41fa7)
- fix: keep gitbutler-change-id when canonical change-id exists (6211211)
- Emit markdown EOF markers and fix -w line compare keys (f7f0465)
- Fix diff alignment when appending to a file without trailing newline (711dc7b)
- Merge branch 'cursor/commit-dry-run-steering-19cd' (ebbb16f)
- test: set CreateTagRequest force and dry_run after tag API rebase (8a9f0e2)
- tree_sha256: accumulate global prefix for deep submodule exclusions (955c708)
- Fix nested tree-sha256 exclusions, public-api snapshot, and review fixtures (62e6c1b)
- tree_sha256: add tag verification API with concurrent signature and digest checks (203038e)
- fix(grit-lib): commit dry-run auto-stage and rebase parity with main (4749fe2)
- fix: restore main add staging checks after dry-run rebase (3383969)
- chore(grit-lib): refresh public-api for commit dry-run API (66a249b)
- bench(grit-utils): register commit/dry-run daily scenario (c886ca9)
- test(grit-cli): commit dry-run JSON contract and CLI coverage (efec539)
- feat(grit-lib, grit-cli): commit dry-run without disk writes (f4ab51a)
Full Changelog: v0.5.16...v0.5.17