github GitoxideLabs/gitoxide gix-filter-v0.33.0
gix-filter v0.33.0

3 hours ago

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::Delay with 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 invoke cargo run --example arrow and
    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 its CARGO_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::Options in place of can_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::Delay with its default. (2965ab5)
    • Add to_worktree::Options in place of can_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)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.