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>maint
parent
61e51e0000
commit
cbf50f9e3d
18
refs.c
18
refs.c
|
|
@ -3763,16 +3763,16 @@ int ref_transaction_commit(struct ref_transaction *transaction,
|
||||||
/* Acquire all locks while verifying old values */
|
/* Acquire all locks while verifying old values */
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
struct ref_update *update = updates[i];
|
struct ref_update *update = updates[i];
|
||||||
unsigned int flags = update->flags;
|
|
||||||
|
|
||||||
if ((flags & REF_HAVE_NEW) && is_null_sha1(update->new_sha1))
|
if ((update->flags & REF_HAVE_NEW) &&
|
||||||
flags |= REF_DELETING;
|
is_null_sha1(update->new_sha1))
|
||||||
|
update->flags |= REF_DELETING;
|
||||||
update->lock = lock_ref_sha1_basic(
|
update->lock = lock_ref_sha1_basic(
|
||||||
update->refname,
|
update->refname,
|
||||||
((update->flags & REF_HAVE_OLD) ?
|
((update->flags & REF_HAVE_OLD) ?
|
||||||
update->old_sha1 : NULL),
|
update->old_sha1 : NULL),
|
||||||
NULL,
|
NULL,
|
||||||
flags,
|
update->flags,
|
||||||
&update->type);
|
&update->type);
|
||||||
if (!update->lock) {
|
if (!update->lock) {
|
||||||
ret = (errno == ENOTDIR)
|
ret = (errno == ENOTDIR)
|
||||||
|
|
@ -3787,9 +3787,9 @@ int ref_transaction_commit(struct ref_transaction *transaction,
|
||||||
/* Perform updates first so live commits remain referenced */
|
/* Perform updates first so live commits remain referenced */
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
struct ref_update *update = updates[i];
|
struct ref_update *update = updates[i];
|
||||||
int flags = update->flags;
|
|
||||||
|
|
||||||
if ((flags & REF_HAVE_NEW) && !is_null_sha1(update->new_sha1)) {
|
if ((update->flags & REF_HAVE_NEW)
|
||||||
|
&& !is_null_sha1(update->new_sha1)) {
|
||||||
int overwriting_symref = ((update->type & REF_ISSYMREF) &&
|
int overwriting_symref = ((update->type & REF_ISSYMREF) &&
|
||||||
(update->flags & REF_NODEREF));
|
(update->flags & REF_NODEREF));
|
||||||
|
|
||||||
|
|
@ -3822,15 +3822,15 @@ int ref_transaction_commit(struct ref_transaction *transaction,
|
||||||
/* Perform deletes now that updates are safely completed */
|
/* Perform deletes now that updates are safely completed */
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
struct ref_update *update = updates[i];
|
struct ref_update *update = updates[i];
|
||||||
int flags = update->flags;
|
|
||||||
|
|
||||||
if ((flags & REF_HAVE_NEW) && is_null_sha1(update->new_sha1)) {
|
if ((update->flags & REF_HAVE_NEW)
|
||||||
|
&& is_null_sha1(update->new_sha1)) {
|
||||||
if (delete_ref_loose(update->lock, update->type, err)) {
|
if (delete_ref_loose(update->lock, update->type, err)) {
|
||||||
ret = TRANSACTION_GENERIC_ERROR;
|
ret = TRANSACTION_GENERIC_ERROR;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(flags & REF_ISPRUNING))
|
if (!(update->flags & REF_ISPRUNING))
|
||||||
string_list_append(&refs_to_delete,
|
string_list_append(&refs_to_delete,
|
||||||
update->lock->ref_name);
|
update->lock->ref_name);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue