summaryrefslogtreecommitdiffstats
path: root/refs.h
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-02-18 22:53:27 +0100
committerJunio C Hamano <gitster@pobox.com>2022-02-18 22:53:27 +0100
commit991b4d47f0accd3955d05927d5ce434e03ffbdb6 (patch)
treeb60f5608c4a0f3a04014e57a9fbd024dadf35ef3 /refs.h
parentMerge branch 'pw/use-in-process-checkout-in-rebase' (diff)
parentrefs: skip hooks when deleting uncovered packed refs (diff)
downloadgit-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.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/refs.h b/refs.h
index cd2d0c1ac0..ff859d5951 100644
--- a/refs.h
+++ b/refs.h
@@ -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);