Skip to main content

TOMBSTONE

Constant TOMBSTONE 

Source
pub const TOMBSTONE: u8 = 0;
Expand description

A row that retires an oid.

The file is append-only, so retain cannot reach back and delete: it appends rows that say this oid is gone, and the index fold applies them in file order, so the last word about an oid wins. Dropping only from the in-memory index is what a first cut did, and it was WRONG in the way that matters — a_wholly_dead_pack_does_not_come_back_when_the_store_is_reopened came back with 551 commits instead of 1, because a reopen rebuilds the index from the file and resurrected every row gc had retired.

0 and not a sixth column: git’s pack type codes are 1–7 and 0 is not one of them, so kind_of already answers None for it. A tombstone costs an oid and an empty payload, not a byte on every live row.