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

7 hours ago

New Features

  • accept existing Windows filesystem metadata
    Once again, skipped through the tests real quick, but deleted some as well
    as they seemed overkill.

    The Windows status cache duplicated index-stat normalization and maintained
    its own cached/live metadata adapter. Timestamp selection, zeroed identity
    fields, size truncation, and mode interpretation could therefore drift from
    the live gix-index path.

    Add a documented Windows-only From<std::fs::Metadata> conversion that wraps
    already obtained metadata without filesystem access. Callers remain
    responsible for obtaining no-follow metadata. Keep Unix excluded because
    its wrapper deliberately uses inode change time rather than birth time.

    Store wrapped metadata in the lazy, per-worker, per-status-call directory
    cache and borrow it during status computation. Live metadata is locally
    owned and borrowed through the same path, so no cloning support is needed.
    Remove the cached Stat record and cached/live adapter, using
    Stat::from_fs(), Mode::change_to_match_fs(), and metadata accessors for
    both sources. Retain the public change_to_match_fs_with_values() API.

    Validate enumeration metadata with Stat::from_fs() before caching it.
    Pre-epoch timestamps still trigger live fallback, preserving status error
    context, concrete causes, and early returns. Unavailable timestamps now
    remain cacheable and use the shared Unix-epoch default, matching live
    interpretation. Retain exact-name lookup, lossless cache keys, successful
    entries alongside unusable ones, and fallback after enumeration failures.
    Windows DirEntry::metadata() still supplies no-follow enumeration data
    without per-entry path metadata calls; full u64 sizes remain available
    independently of truncated index sizes.

    Extend parity tests for executable index mode with both executable-bit
    settings, distinct subsecond creation/modification times, pre-epoch creation
    and modification times, and a sparse file of 4 GiB + 123 bytes. Verify actual
    cached/live status results, timestamp error propagation, intent-to-add early
    returns, and wrapping a metadata snapshot after its source file is removed.
    Retain junction, file/directory symlink, invalid-name, exact-case, missing
    entry, and failed-enumeration coverage.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Merge pull request #3071 from GitoxideLabs/safe-fscache (46f7c7d)
    • Accept existing Windows filesystem metadata (3c60873)
    • Merge pull request #3056 from GitoxideLabs/worktree-sparse-checkout (ca9eb08)
    • 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.