diff options
author | Junio C Hamano <gitster@pobox.com> | 2022-04-14 14:17:12 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-04-14 14:17:12 -0700 |
commit | 4027e30c5395c9c1aeea85e99f51ac62f5148145 (patch) | |
tree | be0afd51aa31e5a0e20beafb673c72f56a422108 /refs | |
parent | Merge branch 'jc/relnotes-updates' (diff) | |
parent | RelNotes: revert the description on the reverted topics (diff) | |
download | tgif-4027e30c5395c9c1aeea85e99f51ac62f5148145.tar.xz |
Merge branch 'jc/revert-ref-transaction-hook-changes'
Revert the "deletion of a ref should not trigger transaction events
for loose and packed ref backends separately" that regresses the
behaviour when a ref is not modified since it was packed.
* jc/revert-ref-transaction-hook-changes:
RelNotes: revert the description on the reverted topics
Revert "fetch: increase test coverage of fetches"
Revert "Merge branch 'ps/avoid-unnecessary-hook-invocation-with-packed-refs'"
Diffstat (limited to 'refs')
-rw-r--r-- | refs/files-backend.c | 26 | ||||
-rw-r--r-- | refs/packed-backend.c | 28 | ||||
-rw-r--r-- | refs/packed-backend.h | 7 | ||||
-rw-r--r-- | refs/refs-internal.h | 1 |
4 files changed, 14 insertions, 48 deletions
diff --git a/refs/files-backend.c b/refs/files-backend.c index 95acab78ee..8db7882aac 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -1136,8 +1136,7 @@ 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, - REF_TRANSACTION_SKIP_HOOK, &err); + transaction = ref_store_transaction_begin(&refs->base, &err); if (!transaction) goto cleanup; ref_transaction_add_update( @@ -1208,8 +1207,7 @@ 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, - REF_TRANSACTION_SKIP_HOOK, &err); + transaction = ref_store_transaction_begin(refs->packed_ref_store, &err); if (!transaction) return -1; @@ -1266,7 +1264,6 @@ static int files_delete_refs(struct ref_store *ref_store, const char *msg, { struct files_ref_store *refs = files_downcast(ref_store, REF_STORE_WRITE, "delete_refs"); - struct ref_transaction *transaction = NULL; struct strbuf err = STRBUF_INIT; int i, result = 0; @@ -1276,15 +1273,10 @@ static int files_delete_refs(struct ref_store *ref_store, const char *msg, if (packed_refs_lock(refs->packed_ref_store, 0, &err)) goto error; - transaction = ref_store_transaction_begin(refs->packed_ref_store, - REF_TRANSACTION_SKIP_HOOK, &err); - if (!transaction) - goto error; - - result = packed_refs_delete_refs(refs->packed_ref_store, - transaction, msg, refnames, flags); - if (result) + if (refs_delete_refs(refs->packed_ref_store, msg, refnames, flags)) { + packed_refs_unlock(refs->packed_ref_store); goto error; + } packed_refs_unlock(refs->packed_ref_store); @@ -1295,7 +1287,6 @@ static int files_delete_refs(struct ref_store *ref_store, const char *msg, result |= error(_("could not remove reference %s"), refname); } - ref_transaction_free(transaction); strbuf_release(&err); return result; @@ -1312,7 +1303,6 @@ error: else error(_("could not delete references: %s"), err.buf); - ref_transaction_free(transaction); strbuf_release(&err); return -1; } @@ -2784,8 +2774,7 @@ static int files_transaction_prepare(struct ref_store *ref_store, */ if (!packed_transaction) { packed_transaction = ref_store_transaction_begin( - refs->packed_ref_store, - REF_TRANSACTION_SKIP_HOOK, err); + refs->packed_ref_store, err); if (!packed_transaction) { ret = TRANSACTION_GENERIC_ERROR; goto cleanup; @@ -3056,8 +3045,7 @@ static int files_initial_transaction_commit(struct ref_store *ref_store, &affected_refnames)) BUG("initial ref transaction called with existing refs"); - packed_transaction = ref_store_transaction_begin(refs->packed_ref_store, - REF_TRANSACTION_SKIP_HOOK, err); + packed_transaction = ref_store_transaction_begin(refs->packed_ref_store, err); if (!packed_transaction) { ret = TRANSACTION_GENERIC_ERROR; goto cleanup; diff --git a/refs/packed-backend.c b/refs/packed-backend.c index 66c4574c99..97b6837767 100644 --- a/refs/packed-backend.c +++ b/refs/packed-backend.c @@ -1522,10 +1522,15 @@ static int packed_initial_transaction_commit(struct ref_store *ref_store, static int packed_delete_refs(struct ref_store *ref_store, const char *msg, struct string_list *refnames, unsigned int flags) { + struct packed_ref_store *refs = + packed_downcast(ref_store, REF_STORE_WRITE, "delete_refs"); struct strbuf err = STRBUF_INIT; struct ref_transaction *transaction; + struct string_list_item *item; int ret; + (void)refs; /* We need the check above, but don't use the variable */ + if (!refnames->nr) return 0; @@ -1535,30 +1540,10 @@ static int packed_delete_refs(struct ref_store *ref_store, const char *msg, * updates into a single transaction. */ - transaction = ref_store_transaction_begin(ref_store, 0, &err); + transaction = ref_store_transaction_begin(ref_store, &err); if (!transaction) return -1; - ret = packed_refs_delete_refs(ref_store, transaction, - msg, refnames, flags); - - ref_transaction_free(transaction); - return ret; -} - -int packed_refs_delete_refs(struct ref_store *ref_store, - struct ref_transaction *transaction, - const char *msg, - struct string_list *refnames, - unsigned int flags) -{ - struct strbuf err = STRBUF_INIT; - struct string_list_item *item; - int ret; - - /* Assert that the ref store refers to a packed backend. */ - packed_downcast(ref_store, REF_STORE_WRITE, "delete_refs"); - for_each_string_list_item(item, refnames) { if (ref_transaction_delete(transaction, item->string, NULL, flags, msg, &err)) { @@ -1578,6 +1563,7 @@ int packed_refs_delete_refs(struct ref_store *ref_store, error(_("could not delete references: %s"), err.buf); } + ref_transaction_free(transaction); strbuf_release(&err); return ret; } diff --git a/refs/packed-backend.h b/refs/packed-backend.h index 52e0490753..9dd8a344c3 100644 --- a/refs/packed-backend.h +++ b/refs/packed-backend.h @@ -3,7 +3,6 @@ struct repository; struct ref_transaction; -struct string_list; /* * Support for storing references in a `packed-refs` file. @@ -28,12 +27,6 @@ int packed_refs_lock(struct ref_store *ref_store, int flags, struct strbuf *err) void packed_refs_unlock(struct ref_store *ref_store); int packed_refs_is_locked(struct ref_store *ref_store); -int packed_refs_delete_refs(struct ref_store *ref_store, - struct ref_transaction *transaction, - const char *msg, - struct string_list *refnames, - unsigned int flags); - /* * Return true if `transaction` really needs to be carried out against * the specified packed_ref_store, or false if it can be skipped diff --git a/refs/refs-internal.h b/refs/refs-internal.h index 001ef15835..69f93b0e2a 100644 --- a/refs/refs-internal.h +++ b/refs/refs-internal.h @@ -213,7 +213,6 @@ struct ref_transaction { size_t nr; enum ref_transaction_state state; void *backend_data; - unsigned int flags; }; /* |