ref_transaction_commit(): remove the local flags variable
Instead, work directly with update->flags. This has the advantage that the REF_DELETING bit, set in the first loop, can be read in the second loop instead of having to be recomputed. Plus, it was potentially confusing having both update->flags and flags, which sometimes had different values. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
4da50def5b
commit
805cf6e938
7
refs.c
7
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);
|
||||
|
Loading…
Reference in New Issue
Block a user