Expand description
__gunnar_reach__ — reachability bitmaps.
For each selected commit, the set of objects reachable from it — the commit itself, its ancestors, and every tree and blob those commits point at — recorded as a roaring bitmap over object ordinals.
The ordinal space is the archive’s oid-lexicographic ordering of its distinct
objects, which is also the order the sorted lookup sub-index is in and the
order __gunnar_oid__ records in its ordinal column. So a bitmap position
is resolvable to an object with the oid index alone.
What it buys: want − have becomes reach(want) ANDNOT reach(have) — a
bitmap operation instead of a graph traversal. No speedup is claimed here.
Nothing in this repository has measured it against a real repository with real
merge history; the structure is built and correct, the number is not earned
(LAW 7).
Cost, stated plainly: the builder is O(commits × bitmap width) in time and
holds live bitmaps for commits whose children are not yet processed, plus one
memoized tree-closure bitmap per distinct tree. On a wide DAG that is not
cheap. ReachPolicy::max_commits bounds how many bitmaps are kept, not how
many are computed.
Structs§
- Object
Facts - What the builder needs to know about every object in the archive.
- Reach
Entry - One sealed bitmap.
- Reach
Policy - Which commits get a bitmap.
Functions§
- build_
reach - Build the reachability bitmaps.
- build_
reach_ batch - decode_
reach - needs_
payload - Which objects a repack must hold to make the reachability pass exact.
- reach_
schema - read_
reach - Read the reachability bitmaps out of a sealed archive.
Ok(None)when absent.