Bug Fixes
-
preserve hexadecimal case in split-chain filenames
Parsing a chain entry as an
ObjectIdvalidates its contents, but formatting
that ID lowercases the hexadecimal spelling. On case-sensitive filesystems,
an uppercase or mixed-case entry with a matchinggraph-{hash}.graphfile
then fails to load withNotFound. 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
Graphconstructors now require
object_hash.Graph::at()andgix_commitgraph::at()also require
alloc_limit_bytes, withNonedisabling the limit.
TryFrom<&Path> for Graphis removed.Corruption checks now protect ordinary traversal and graph loading,
without requiring a prior call toGraph::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
EDGEchunks, 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 entireEDGEchunk, including geometric
growth. A tight limit can reject valid graphs with many separate octopus
merges; mapped graph bytes do not count as heap allocations. - Validate parent positions before yielding them and stop at the first
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)