github GitoxideLabs/gitoxide gix-worktree-v0.58.0
gix-worktree v0.58.0

4 hours ago

New Features

  • remove linked worktrees safely

    Provide the gix-worktree plumbing needed to recursively remove a linked
    checkout and its private Git directory without following symbolic links or
    crossing Unix mount boundaries.

    Use dua-core for traversal and parallel deletion with progress reporting,
    bounded retries for directory-not-empty races, and errors distinguishing
    checkout and administration failures. Keep repository validation, dirty-state
    checks, lock policy, and branch decisions with higher-level callers.

  • create linked worktrees

    Add transactional linked-worktree administration with rollback, then compose
    it in gix with existing reference, checkout, index, progress, and interruption
    machinery.

    Support attached and detached worktrees from bare or non-bare repositories while
    rejecting occupied branches and destinations. Keep move, remove, repair, hooks,
    sparse checkout, and relative-link configuration out of scope.

Bug Fixes

  • skip symlinked ignore files and protect checkout writes

    A tracked .gitignore symlink was absent from the skip-worktree ID
    mapping, so ordinary ignore lookup could parse arbitrary external files.
    An endless target could also exhaust memory.

    Always request no-follow reads for worktree .gitignore files, regardless
    of their index entry. Use gix_fs::open_read_only_no_follow() when pattern
    loading disallows symlinks, treating skipped links as absent files so
    skip-worktree blob fallback remains available. Discard partially read
    pattern bytes on failure.

    Use the same helper for the worktree .mailmap, reporting symlinks as
    errors without reading their targets and identifying worktree read errors
    correctly. Explicitly configured pattern files and mailmap.file may
    still follow symlinks.

    On Windows, inspect nonexclusive checkout handles for symlinks before
    truncating with set_len(0) or writing. Retain forced unlink-and-replace
    behavior and route symlinks checked out as ordinary files through the
    same validated open path. No-follow protection applies to the final path
    component on Unix and Windows; leading components can still be symlinks.

    Compare ignore lookup and skip-worktree fallback against isolated Git
    check-ignore calls. Cover mailmap policies and checkout collisions with
    file, directory, and dangling symlink targets, including links created
    after the Windows path check and validation before truncation.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Prepare changelogs prior to release (794eeef)
    • Merge pull request #3032 from GitoxideLabs/sec-audit (1d7bac7)
    • Skip symlinked ignore files and protect checkout writes (218db27)
    • Merge pull request #3033 from GitoxideLabs/gix-cli-progress-cleanup (80f4b03)
    • Merge pull request #3022 from GitoxideLabs/release-testtools (f819565)
    • Merge pull request #3025 from GitoxideLabs/worktree-create (acf906f)
    • Remove linked worktrees safely (e0240ee)
    • Merge pull request #2977 from GitoxideLabs/worktree-create (d9f7c85)
    • Create linked worktrees (6910a50)
    • Merge pull request #3020 from GitoxideLabs/report-september (5fb3dcf)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.