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

7 hours ago

Bug Fixes

  • preserve the refs directory when pruning loose references

    Packing or deleting the final loose reference released its lock with the
    Git directory as the cleanup boundary. Empty-parent cleanup could then
    remove refs itself, leaving an otherwise valid repository undiscoverable.
    Rollback had the same problem, and its existing test explicitly accepted
    removal of the root.

    Bound loose-reference lock cleanup at the resolved physical refs root,
    while continuing to prune empty descendants. Respect namespaces, shared
    and private worktree routing, and worktree aliases, including a worktree
    named refs; keep top-level pseudorefs within their containing directory.
    Apply the same boundary policy to update and deletion locks so commit,
    rollback, and failed preparation retain the repository structure.

    Add disposable Git-produced baselines for packing and deleting the final
    flat and nested reference. Compare packed contents, verify that the loose
    source and locks disappear, and check that repository discovery still
    works. Update rollback expectations and cover namespace, pseudoref, and
    linked-worktree cleanup.

    This is a prerequisite for clone reference handling, which can now rely
    on gix-ref preserving the root instead of recreating it after fetching.

  • preserve arbitrary bytes in reflog messages

    Reference transactions formatted their byte-oriented reflog message with
    Display, which replaced invalid UTF-8 with replacement characters. Write
    the message bytes directly between the existing tab and newline delimiters.

    The regression covers empty, ASCII, and invalid-UTF-8 messages through the
    transaction API. It failed before the correction and passes with both
    GIX_TEST_FIXTURE_HASH=sha1 and sha256.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Merge pull request #3037 from ameyypawar/gix-remote-default-branch (ad0202e)
    • Preserve the refs directory when pruning loose references (cf55f83)
    • Merge pull request #3054 from GitoxideLabs/pygix (09f85be)
    • Preserve arbitrary bytes in reflog messages (efe3b11)
    • Merge pull request #3053 from GitoxideLabs/various-improvements (2d8dcc4)
    • Release gix-error v0.5.1, gix-utils v0.5.1 (6d1b686)
    • Merge pull request #3048 from GitoxideLabs/new-release (5fccccf)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.