Bug Fixes
-
When ignoring worktree encoding, also ignore actual filter failures.
Previously it would only ignore unknown filter names in this mode. -
continue checkout with unavailable encodings
Repositories can declare working-tree encodings unsupported by encoding_rs, such as UTF-32. Checkout previously rejected these declarations before writing any content, causing non-bare clones to fail.Add regression coverage for an unknown encoding with CRLF conversion. Checkout now warns and preserves the output of earlier conversions when the requested encoding is unavailable, while other filter users remain strict by default.
This matches Git convert.c encode_to_worktree() and entry.c checkout_entry_ca(): since 107642f (Git 2.18), failed checkout re-encoding is non-fatal and the current blob content is written.
Validated with focused gix-filter conversion tests, gix-worktree-state checkout tests, cargo fmt, and cargo check for gix and gix-worktree-state.
-
preserve input when optional filter drivers fail
Non-required single-file filters could exit before consuming stdin, causing a
BrokenPipe in the background writer. Merely suppressing a failed driver's pipe
error would expose partial or empty output instead of Git's fallback behavior.Share the original input allocation with the writer and retain it for fallback
while buffering candidate output until the exit status is known. Accept output
from successful filters even if they intentionally close stdin early; on a
non-zero exit, stdout failure, or other write failure, return the original
bytes. Required drivers retain their streaming error behavior.This is bad for memory consumption, but let's be correct first.
-
handle broken pipes from optional filter drivers
The test-fast Ubuntu ARM check exposed a BrokenPipe from the background stdin
writer when the Arrow helper intentionally exited before consuming its input.
This made non-required filter failures observable even though their non-zero
exit status is deliberately ignored.Retain the writer result until after checking required child status, prioritize
a required driver's non-zero exit over the secondary pipe error, and ignore
BrokenPipe only for non-required drivers. The existing failure tests now use
non-empty input to cover both outcomes.
Other
- align docs of
driver::Delaywith its default.
Previously it claimed delay is forbidden, even though it's allowed.
Test
-
avoid nested Cargo in gix-filter driver tests
Concurrent nextest processes could each invokecargo run --example arrowand
race while Cargo replaced the shared example artifact. This made driver tests
intermittently fail when Cargo could not execute the path it had just built.Declare the Arrow helper as a dedicated test binary, let Cargo build it before
integration tests, and use itsCARGO_BIN_EXE_*path with repository-standard
shell quoting. Move the helper source into the packaged test-helper layout
without duplicating targets, and remove serial_test now that tests do not
coordinate shared state.
Bug Fixes (BREAKING)
- add
to_worktree::Optionsin place ofcan_delay, and don't fail on unknown encodings
This makes it more obvious, and makes it more likely that tooling using this function
won't fail for the same reason, but instead act like Git, while still supporting strict
writers or those who want to act differently.
Commit Statistics
- 18 commits contributed to the release.
- 31 days passed between releases.
- 7 commits were understood as conventional.
- 1 unique issue was worked on: #1798
Commit Details
view details
- #1798
- Continue checkout with unavailable encodings (4bc6596)
- Uncategorized
- Update changelogs prior to release (cb6ec7d)
- Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates (f0ec710)
- Merge pull request #2737 from GitoxideLabs/encoding-fallback-pony (2315ede)
- When ignoring worktree encoding, also ignore actual filter failures. (e4768e3)
- Align docs of
driver::Delaywith its default. (2965ab5) - Add
to_worktree::Optionsin place ofcan_delay, and don't fail on unknown encodings (9dcff30) - Merge pull request #2721 from GitoxideLabs/remove-kstring (e70732a)
- Adapt to changes in
gix-attributes(e11d7a2) - Merge pull request #2722 from GitoxideLabs/reasons (c16b5a1)
- Replace lint allowances with expectations (43ff87a)
- Merge pull request #2714 from GitoxideLabs/fix-credentials-parsing (cf3053a)
- Release gix-path v0.12.2, gix-error v0.2.5, gix-utils v0.3.4, gix-date v0.15.6, gix-url v0.36.2, gix-credentials v0.38.2 (27aec47)
- Merge pull request #2713 from GitoxideLabs/fix-flaky-cargo-run (f803d3e)
- Preserve input when optional filter drivers fail (06408b2)
- Handle broken pipes from optional filter drivers (e9d1d26)
- Avoid nested Cargo in gix-filter driver tests (eaf579e)
- Merge pull request #2646 from GitoxideLabs/report (1b1541e)