refs: do not execute reference-transaction hook on packing refs
The reference-transaction hook is supposed to track logical changes to references, but it currently also gets executed when packing refs in a repository. This is unexpected and ultimately not all that useful: packing refs is not supposed to result in any user-visible change to the refs' state, and it ultimately is an implementation detail of how refs stores work. Fix this excessive execution of the hook when packing refs. Reported-by: Waleed Khan <me@waleedkhan.name> Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
2ce8254362
commit
ffad994138
@ -1121,7 +1121,8 @@ static void prune_ref(struct files_ref_store *refs, struct ref_to_prune *r)
|
||||
if (check_refname_format(r->name, 0))
|
||||
return;
|
||||
|
||||
transaction = ref_store_transaction_begin(&refs->base, 0, &err);
|
||||
transaction = ref_store_transaction_begin(&refs->base,
|
||||
REF_TRANSACTION_SKIP_HOOK, &err);
|
||||
if (!transaction)
|
||||
goto cleanup;
|
||||
ref_transaction_add_update(
|
||||
@ -1192,7 +1193,8 @@ static int files_pack_refs(struct ref_store *ref_store, unsigned int flags)
|
||||
struct strbuf err = STRBUF_INIT;
|
||||
struct ref_transaction *transaction;
|
||||
|
||||
transaction = ref_store_transaction_begin(refs->packed_ref_store, 0, &err);
|
||||
transaction = ref_store_transaction_begin(refs->packed_ref_store,
|
||||
REF_TRANSACTION_SKIP_HOOK, &err);
|
||||
if (!transaction)
|
||||
return -1;
|
||||
|
||||
|
@ -150,21 +150,12 @@ test_expect_success 'hook does not get called on packing refs' '
|
||||
git pack-refs --all &&
|
||||
|
||||
# We only expect a single hook invocation, which is the call to
|
||||
# git-update-ref(1). But currently, packing refs will also trigger the
|
||||
# hook.
|
||||
# git-update-ref(1).
|
||||
cat >expect <<-EOF &&
|
||||
prepared
|
||||
$ZERO_OID $POST_OID refs/heads/unpacked-ref
|
||||
committed
|
||||
$ZERO_OID $POST_OID refs/heads/unpacked-ref
|
||||
prepared
|
||||
$ZERO_OID $POST_OID refs/heads/unpacked-ref
|
||||
committed
|
||||
$ZERO_OID $POST_OID refs/heads/unpacked-ref
|
||||
prepared
|
||||
$POST_OID $ZERO_OID refs/heads/unpacked-ref
|
||||
committed
|
||||
$POST_OID $ZERO_OID refs/heads/unpacked-ref
|
||||
EOF
|
||||
|
||||
test_cmp expect actual
|
||||
|
Loading…
Reference in New Issue
Block a user