github GitoxideLabs/gitoxide gix-ref-v0.68.0
gix-ref v0.68.0

7 hours ago

Changed (BREAKING)

  • replace forwarding errors with metadata and recovery signals

    Took a closer look over about 40% of the commit, skimmed/skipped the rest it. So not a complete rubber stamp.
    Later-on, a lot of these explicit downcasts should be turned into quick classification checks.

    Return canonical Exn errors from reference operations and gix::Error at
    porcelain boundaries. Preserve native parser, filesystem, lock and custom
    name-conversion sources instead of rewrapping them in operation-specific enums.

    Use documented Metadata dictionaries for diagnostic paths, reference names,
    input bytes and positions. Keep concrete signals for absent references,
    malformed loose references, stale expected values, existing references and
    missing committer identity. These support GitButler-style recovery without
    string matching; stale reference values still require reconciliation before
    retrying. Fetch only treats an absent referent as unborn, propagating malformed
    referents and read failures.

    Remove empty error namespaces and duplicate conversions along with their
    workspace callers. Preserve unterminated packed input and count peeled lines
    when reporting iterator positions.

  • migrate errors to gix-error

    rubberstamp

    But looked into it more to see why it has so much more code. The simple answer is that it basically doesn't use gix-error,
    but writes error types manually.
    This needs rework.

  • 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.

New Features

  • add convenient RefEdit constructors
    While reviewing the the actual API in detail with changes, I merely skimmed the
    usage of them, also assuming that they incorrect usage would cause test failures.

    Cover standard updates and deletions, configurable reflog handling, prebuilt
    changes, and symbolic-reference dereferencing.

    Adopt the constructors throughout the workspace so callers express intent
    without repeating common defaults.

Bug Fixes

  • explain unsupported reftable storage when reading HEAD

    gix status reports Git's refs/heads/.invalid placeholder as a
    malformed symbolic reference, hiding that reftable is unsupported.
    Recognize that exact target in the shared loose-reference decoder so
    HEAD lookup reports the unsupported backend. Other invalid symbolic
    targets retain their existing validation errors.

    Git reference: checkout 1630431f326e15fcde608827b5ff38422528eb59,
    refs.c::refs_create_refdir_stubs() and t/t0610-reftable-basics.sh.
    Git writes this placeholder in ordinary and linked worktrees, and now
    also uses it for alternate reference storage. Mention reftable without
    assuming it is the only possible backend. Local Git 2.50.1 resolves
    the real fixture's HEAD to refs/heads/main despite the placeholder.

    The new decoder regression failed with the original invalid-path error
    before the fix. A nearby invalid target still reports name validation,
    and the existing real-reftable repository test now checks the cause.

Commit Statistics

  • 13 commits contributed to the release over the course of 32 calendar days.
  • 33 days passed between releases.
  • 5 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Merge pull request #2847 from GitoxideLabs/gix-error-completion (6356013)
    • Replace forwarding errors with metadata and recovery signals (fb36616)
    • Use borrowed error inspection throughout the workspace (daf73b5)
    • Migrate errors to gix-error (1487c6f)
    • Merge pull request #2989 from GitoxideLabs/error-conversion-review (4b9ff51)
    • Merge pull request #2970 from GitoxideLabs/better-reftable-error (6b2f33d)
    • Explain unsupported reftable storage when reading HEAD (87ed136)
    • Merge pull request #2949 from GitoxideLabs/error-conversion-review (a095334)
    • Raise MSRV to Rust 1.88 (4b42e0c)
    • Add convenient RefEdit constructors (f5b3feb)
    • 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)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.