github GitoxideLabs/gitoxide gix-commitgraph-v0.42.0
gix-commitgraph v0.42.0

7 hours ago

Bug Fixes

  • preserve hexadecimal case in split-chain filenames

    Parsing a chain entry as an ObjectId validates its contents, but formatting
    that ID lowercases the hexadecimal spelling. On case-sensitive filesystems,
    an uppercase or mixed-case entry with a matching graph-{hash}.graph file
    then fails to load with NotFound. Optional graph loading can mistake this
    valid existing graph for an absent cache.

    Keep object-ID validation, then construct the filename from the original
    validated ASCII entry. This follows Git's filename behavior while retaining
    the bounded line reader and rejection of invalid object IDs.

Bug Fixes (BREAKING)

  • require hash kind and allocation limit for graph loading

    Breaking changes: path-based Graph constructors now require
    object_hash. Graph::at() and gix_commitgraph::at() also require
    alloc_limit_bytes, with None disabling the limit.
    TryFrom<&Path> for Graph is removed.

    Corruption checks now protect ordinary traversal and graph loading,
    without requiring a prior call to Graph::verify_integrity():

    • Validate parent positions before yielding them and stop at the first
      error. Parents may reference the current file or its base files, but
      cannot point into later files. Iterator size hints allow early failure.
    • Reject misaligned EDGE chunks, check edge-offset arithmetic and
      commit counts before narrowing, and require monotonic fanout tables.
    • Bound split-chain entries to the expected hash length, parse object IDs
      before constructing paths, and enforce the 256-file maximum.
    • Require chain entries and graph-file headers to match object_hash.
      Fall back to a split chain only when the monolithic graph is missing,
      preserving errors from existing corrupt graphs.

    The allocation limit bounds a conservative parent-buffer capacity
    estimate derived from each entire EDGE chunk, including geometric
    growth. A tight limit can reject valid graphs with many separate octopus
    merges; mapped graph bytes do not count as heap allocations.

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 #3066 from GitoxideLabs/check-commit-graph (7540f69)
    • Refactor gix-commitgraph tests to align with current style (df6ba9c)
    • Preserve hexadecimal case in split-chain filenames (238ebc5)
    • Require hash kind and allocation limit for graph loading (8722752)
    • 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.