pub struct ReachSet {
pub objects: Vec<Vec<u8>>,
pub commits: Vec<Vec<u8>>,
pub client_has: OidList,
}Expand description
One GitServe::select answer.
Fields§
§objects: Vec<Vec<u8>>Every object to send, as raw oids.
Order is not part of the contract. Measured 2026-08-08 on a
154-object fixture: sorted, unsorted and deliberately reversed all
produce copied=154 recompressed=0 and the identical object graph,
because the emitter orders its own output.
commits: Vec<Vec<u8>>Which of objects are commits. Not derivable by the caller without a
header read per object; the store knows it for free.
client_has: OidListThe closure of have: what the receiver held before this transfer,
never an object this transfer carries. The voucher a thin delta may name
a base from. Empty for a clone.
An OidList and not a Vec<Vec<u8>>, because this one is
repository-sized. objects is what the transfer carries — small for a
fetch — but the voucher is the closure of what the client already had,
which on an incremental fetch is very nearly the whole repository: 12 112
oids to answer a 69-object request, measured on oden 2026-08-15. One
allocation per oid of that is a per-request cost that buys nothing, in
both engines. See OidList.