diff options
author | Junio C Hamano <gitster@pobox.com> | 2022-02-18 22:53:27 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-02-18 22:53:27 +0100 |
commit | 991b4d47f0accd3955d05927d5ce434e03ffbdb6 (patch) | |
tree | b60f5608c4a0f3a04014e57a9fbd024dadf35ef3 /refs.h | |
parent | Merge branch 'pw/use-in-process-checkout-in-rebase' (diff) | |
parent | refs: skip hooks when deleting uncovered packed refs (diff) | |
download | git-991b4d47f0accd3955d05927d5ce434e03ffbdb6.tar.xz git-991b4d47f0accd3955d05927d5ce434e03ffbdb6.zip |
Merge branch 'ps/avoid-unnecessary-hook-invocation-with-packed-refs'
Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
* ps/avoid-unnecessary-hook-invocation-with-packed-refs:
refs: skip hooks when deleting uncovered packed refs
refs: do not execute reference-transaction hook on packing refs
refs: demonstrate excessive execution of the reference-transaction hook
refs: allow skipping the reference-transaction hook
refs: allow passing flags when beginning transactions
refs: extract packed_refs_delete_refs() to allow control of transaction
Diffstat (limited to 'refs.h')
-rw-r--r-- | refs.h | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -226,7 +226,7 @@ char *repo_default_branch_name(struct repository *r, int quiet); * struct strbuf err = STRBUF_INIT; * int ret = 0; * - * transaction = ref_store_transaction_begin(refs, &err); + * transaction = ref_store_transaction_begin(refs, 0, &err); * if (!transaction || * ref_transaction_update(...) || * ref_transaction_create(...) || @@ -564,10 +564,16 @@ enum action_on_err { }; /* + * Skip executing the reference-transaction hook. + */ +#define REF_TRANSACTION_SKIP_HOOK (1 << 0) + +/* * Begin a reference transaction. The reference transaction must * be freed by calling ref_transaction_free(). */ struct ref_transaction *ref_store_transaction_begin(struct ref_store *refs, + unsigned int flags, struct strbuf *err); struct ref_transaction *ref_transaction_begin(struct strbuf *err); |