summaryrefslogtreecommitdiff
path: root/refs
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2022-04-14 14:17:12 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2022-04-14 14:17:12 -0700
commit4027e30c5395c9c1aeea85e99f51ac62f5148145 (patch)
treebe0afd51aa31e5a0e20beafb673c72f56a422108 /refs
parentMerge branch 'jc/relnotes-updates' (diff)
parentRelNotes: revert the description on the reverted topics (diff)
downloadtgif-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.c26
-rw-r--r--refs/packed-backend.c28
-rw-r--r--refs/packed-backend.h7
-rw-r--r--refs/refs-internal.h1
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;
};
/*