summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--refs.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/refs.c b/refs.c
index 76609bff43..58b118243c 100644
--- a/refs.c
+++ b/refs.c
@@ -3802,16 +3802,15 @@ int ref_transaction_commit(struct ref_transaction *transaction,
/* Acquire all locks while verifying old values */
for (i = 0; i < n; i++) {
struct ref_update *update = updates[i];
- int flags = update->flags;
if (is_null_sha1(update->new_sha1))
- flags |= REF_DELETING;
+ update->flags |= REF_DELETING;
update->lock = lock_ref_sha1_basic(update->refname,
(update->have_old ?
update->old_sha1 :
NULL),
NULL,
- flags,
+ update->flags,
&update->type);
if (!update->lock) {
ret = (errno == ENOTDIR)
@@ -3827,7 +3826,7 @@ int ref_transaction_commit(struct ref_transaction *transaction,
for (i = 0; i < n; i++) {
struct ref_update *update = updates[i];
- if (!is_null_sha1(update->new_sha1)) {
+ if (!(update->flags & REF_DELETING)) {
if (!update->lock->force_write &&
!hashcmp(update->lock->old_sha1, update->new_sha1)) {
unlock_ref(update->lock);