New Features
-
add
Never::panic_on_access()to forbid object accessTests that must avoid object database access can use
Never::panic_on_access()
instead of implementing their own panicking stores. The returnedPanicAlways
type panics on reads, existence checks, and writes, while preserving the
existingNeverunit struct and its behavior.Replace the custom panicking stores in the null-ID tests in
gix-diffand
gix-merge, and cover every object-access method. Validated theobject,diff,
andmergeintegration test suites andcargo fmt --all -- --check.Keep rustdoc links aligned with the constructor name. CI's
testandlint
jobs build documentation with warnings denied, and the old
Never::fail_always()links failed to resolve. The failure was reproduced
locally;RUSTDOCFLAGS='-D warnings' cargo doc -p gix-object --no-deps --features sha1
passes with the corrected links.
Bug Fixes
-
Keep rust workspace tests inside disposable repositories and isolated environments
Direct Git launches inherited repository selectors and user configuration even
when tests supplied a fixture working directory. Tests of default-environment
APIs and local Git transports also shared the runner's environment. A few
journey tests wrote beneath source directories or used the source checkout as
the repository under test.Use the shared
gix-testtoolsGit command builder for subprocess setup, isolated
repository options for fixtures, and isolated child processes where the real
environment-reading API must be exercised. Scope CWD changes, copy the fixture
used by an object-write test, and run shell journeys throughjtt run. Keep
journey worktrees and example output within their disposable sandboxes and
replace the attributes checkout test with a representative fixture repository.
Prompt examples also run in isolated children and must build successfully; the
old tests could ignore build failures and execute stale cached binaries.The affected Rust crate suites, internal test-tool build, and
max-purejourney
suite pass from a source copy without Git metadata. Signing and Git-daemon
checks use only disposable keys, repositories, and local sockets. -
omit the final newline from bodyless commit titles
An ordinary commit created withgit commit -m "initial commit"exposes
"initial commit\n"asMessageRef::titlebecause the no-separator path
returns the entire message. Exclude a final LF or CRLF in that shared
parser path, preserving other whitespace, interior newlines, and raw bytes.Correct the existing LF and CRLF expectations, add boundary cases for empty
and multiline titles, whitespace, lone CR, and non-UTF-8 bytes, and update
the public documentation andgixreference example.Git reference:
pretty.c(is_blank_line()andformat_subject()) and
t/t6006-rev-list-format.shat1630431f326e15fcde608827b5ff38422528eb59.
Git 2.50.1 also returnsSync with 'maint'via%sfor reference commit
aec3f587505a472db67e9462d0702e7d463a449d, whose raw message ends in LF. -
invoke signature programs without a shell
Treat signing and verification programs as executable paths, matching the
argv-based launch used by Git. Shell detection treated paths containing spaces
as shell commands, so unquoted Windows paths could fail before reaching the
signer.Keep wrapper customization explicit through
program_argumentsand cover signer
and verifier paths containing spaces with regression tests.
Changed (BREAKING)
-
migrate errors to gix-error
rubberstamp
-
raise MSRV to Rust 1.88
The newly published
dua-core3.3 release used by linked-worktree removal
requires Rust 1.88, so raise every workspace crate and the advertised badge
together.Keep the MSRV checks buildable by selecting the latest
sysinfoandrusqlite
release lines that support Rust 1.88.
Commit Statistics
- 18 commits contributed to the release over the course of 32 calendar days.
- 33 days passed between releases.
- 6 commits were understood as conventional.
- 1 unique issue was worked on: #2991
Commit Details
view details
- #2991
- Omit the final newline from bodyless commit titles (f51c0c5)
- Uncategorized
- Merge pull request #2847 from GitoxideLabs/gix-error-completion (6356013)
- Use borrowed error inspection throughout the workspace (daf73b5)
- Migrate errors to gix-error (8c101c9)
- Merge pull request #2989 from GitoxideLabs/error-conversion-review (4b9ff51)
- Merge pull request #2990 from GitoxideLabs/various-improvements (c609062)
- Keep rust workspace tests inside disposable repositories and isolated environments (4e0f8ff)
- Merge pull request #2992 from GitoxideLabs/fix-message-newline (4f29e0c)
- Merge pull request #2971 from GitoxideLabs/diff-nullid-fix (d7551f1)
- Add
Never::panic_on_access()to forbid object access (36e9406) - Merge pull request #2958 from GitoxideLabs/sign-on-windows (c16300c)
- Merge pull request #2957 from GitoxideLabs/sign-on-windows (b7bedcf)
- Invoke signature programs without a shell (9b26904)
- Merge pull request #2949 from GitoxideLabs/error-conversion-review (a095334)
- Raise MSRV to Rust 1.88 (4b42e0c)
- Merge pull request #2955 from GitoxideLabs/transport-url-encoding (7e35849)
- Release gix-path v0.12.6, gix-error v0.3.2, gix-command v0.10.1, gix-transport v0.59.2 (888677a)
- Merge pull request #2932 from GitoxideLabs/fundamental-types-comp (6704303)