github GitoxideLabs/gitoxide gix-merge-v0.21.0
gix-merge v0.21.0

7 hours ago

Bug Fixes

  • skip null-ID lookups in worktree filters

    Worktree merge resources naturally use null IDs when their content comes
    from a file path, as in gix merge file. Automatic text filters queried
    those IDs to inspect indexed line endings, causing guaranteed misses and
    unnecessary object-database refreshes.

    Treat the null sentinel as a missing index blob before querying objects.
    Clarify the resource contract and strengthen the existing worktree_filter
    test to reject object lookups for null-ID resources in both conversion
    modes. Existing assertions retain coverage for indexed CRLF content and
    renormalization.

  • ignore diff-local metadata for identical changes

    Tree diffs assign relation IDs independently. When both sides add the same
    entry under newly added directories, unrelated sibling changes can give those
    additions different ChildOfParent IDs. Comparing the complete Change values
    then routes an agreed tree effect to ResolutionFailure::Unknown.

    Compare the semantic tree effect instead: change kind, source and destination
    paths, modes, object IDs, and rewrite copy behavior. Ignore relation IDs and
    rewrite diff statistics, which do not affect the resulting tree. This also
    coalesces equivalent deletions and rewrites through the same matcher.

    Add bidirectional fixtures with an asymmetric earlier directory change so the
    equivalent target operations receive different diff-local relation IDs. The
    add/add fixture reproduces the pre-fix Unknown resolution, while deletion and
    rewrite fixtures verify the broader class against Git in both directions.

    Git baseline: merge-ort.c at 1630431f326e15fcde608827b5ff38422528eb59 sets
    match_mask = 6 when both sides have the same mode and object ID, then resolves
    that entry cleanly.

Changed (BREAKING)

  • migrate errors to gix-error

    rubberstamp

  • raise MSRV to Rust 1.88

    The newly published dua-core 3.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 sysinfo and rusqlite
    release lines that support Rust 1.88.

Commit Statistics

  • 15 commits contributed to the release over the course of 31 calendar days.
  • 32 days passed between releases.
  • 4 commits were understood as conventional.
  • 1 unique issue was worked on: #2968

Commit Details

view details
  • #2968
    • Ignore diff-local metadata for identical changes (66d2daf)
  • Uncategorized
    • Merge pull request #2847 from GitoxideLabs/gix-error-completion (6356013)
    • Add error context without preliminary erasure (9d0329a)
    • Use borrowed error inspection throughout the workspace (daf73b5)
    • Migrate errors to gix-error (7d42d81)
    • Merge pull request #2982 from mtsgrd/testtools-config-file-isolation (0cd9319)
    • Review (bc9185d)
    • Merge pull request #2971 from GitoxideLabs/diff-nullid-fix (d7551f1)
    • Skip null-ID lookups in worktree filters (2a910ee)
    • Merge pull request #2969 from GitoxideLabs/merge-fix (f0681ba)
    • 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 #2940 from GitoxideLabs/vendor-bisync (dda600d)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.