refs: remove virtual `delete_refs()` function
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest4 patches 0 repliesNew
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/4 | t5510: ensure that the packed-refs file needs lockingt/ | +1 | 0 replies | |
| 2/4 | refs/files: use transactions to delete referencesrefs/ | +34 | 0 replies | |
| 3/4 | refs: deduplicate code to delete referencesrefs.c refs/ refs/ | +47 | 0 replies | |
| 4/4 | refs: remove `delete_refs` callback from backendsrefs/ refs/ refs/ +1 more | +0 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 0/4] refs: remove virtual `delete_refs()` function
Hi,
this patch series refactors the virtual delete_refs() function to instead be implemented generically via a single reference transaction.
The main intent of this patch series is to reduce complexity that we have in the reference backends so that it becomes easier to implement new backends that have the same semantics as others. But at the same time, benchmarks show that the new generic code is even faster than the old backend-specific code. This is mostly because we avoid the overhead of per-reference transactions when deleting many references, but also because the transactional code in the files backend knows to avoid rewriting the packed-refs file in case it contains none of the refs that are to be deleted.
So in the end we have less duplicate code in the files backend, make it easier to implement new backends, and have faster deletion of many refs in the files backend.
Patrick
Patrick Steinhardt (4):
t5510: ensure that the packed-refs file needs locking refs/files: use transactions to delete references
refs: deduplicate code to delete references
refs: remove delete_refs callback from backends
refs.c | 48 ++++++++++++++++++++++++++++++++++++++--- refs/debug.c | 15 ------------- refs/files-backend.c | 49 ------------------------------------------ refs/packed-backend.c | 50 ------------------------------------------- refs/refs-internal.h | 3 --- t/t5510-fetch.sh | 1 + 6 files changed, 46 insertions(+), 120 deletions(-)
base-commit: e0939bec273052b1a8d69db4a3f7c87aaf83e220
Signature · 1 line
2.42.0