Introduce reference deletions via tombstones
This patch series implements a new "looseRefDeletions" repositroy extension. If enabled, then Git will delete references by creating a special tombstone reference that contains the all-zeroes object ID. This serves two purposes:
- It avoids lock contention around the
packed-refs
file. - It avoids rewriting the
packed-refs
file on every rewrite.
Taken together it means that reference deletions are a whole lot more performant now in repositories that have tons of references.