[PATCH 0/6] refs: excessive hook execution with packed refs
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Dec 7, 2021, 10:55 UTC
- Message-ID
- <cover.1638874287.git.ps@pks.im>
Hi,
as reported by Waleed in [1], the reference-transaction hook is being executed when packing refs. Given that the hook ideally ought to track logical updates to refs instead of leaking low-level implementation details of how the files backend works, this is understandably leading to some confusion.
This patch series aims to fix that by improving how the tandom of loose and packed refs backends interact such that we skip executing the hook when the loose backend:
- repacks references.
- needs to delete packed refs when deleting a loose ref would
uncover that packed ref.Patrick
[1]: <CAKjfCeBcuYC3OXRVtxxDGWRGOxC38Fb7CNuSh_dMmxpGVip_9Q@mail.gmail.com>
Patrick Steinhardt (6):
refs: open-code deletion of packed refs
refs: allow passing flags when beginning transactions
refs: allow skipping the reference-transaction hook
refs: demonstrate excessive execution of the reference-transaction
hook
refs: do not execute reference-transaction hook on packing refs
refs: skip hooks when deleting uncovered packed refsrefs.c | 11 +++++-- refs.h | 8 ++++- refs/files-backend.c | 25 +++++++++++----- refs/packed-backend.c | 30 ++++++++++++++----- refs/packed-backend.h | 6 ++++ refs/refs-internal.h | 1 + sequencer.c | 2 +- t/t1416-ref-transaction-hooks.sh | 50 ++++++++++++++++++++++++++++++++ 8 files changed, 113 insertions(+), 20 deletions(-)
-- 2.34.1