files_initial_transaction_commit(): only unlock if locked
Running git clone --single-branch --mirror -b TAGNAME previously
triggered the following error message:
fatal: multiple updates for ref 'refs/tags/TAGNAME' not allowed.
This error condition is handled in files_initial_transaction_commit().
42c7f7ff9
("commit_packed_refs(): remove call to `packed_refs_unlock()`", 2017-06-23)
introduced incorrect unlocking in the error path of this function,
which changes the error message to
fatal: BUG: packed_refs_unlock() called when not locked
Move the call to packed_refs_unlock() above the "cleanup:" label
since the unlocking should only be done in the last error path.
Signed-off-by: Mathias Rav <m@git.strova.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3013dff866
commit
81fcb698e0
@ -2874,13 +2874,12 @@ static int files_initial_transaction_commit(struct ref_store *ref_store,
|
|||||||
|
|
||||||
if (initial_ref_transaction_commit(packed_transaction, err)) {
|
if (initial_ref_transaction_commit(packed_transaction, err)) {
|
||||||
ret = TRANSACTION_GENERIC_ERROR;
|
ret = TRANSACTION_GENERIC_ERROR;
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
packed_refs_unlock(refs->packed_ref_store);
|
||||||
cleanup:
|
cleanup:
|
||||||
if (packed_transaction)
|
if (packed_transaction)
|
||||||
ref_transaction_free(packed_transaction);
|
ref_transaction_free(packed_transaction);
|
||||||
packed_refs_unlock(refs->packed_ref_store);
|
|
||||||
transaction->state = REF_TRANSACTION_CLOSED;
|
transaction->state = REF_TRANSACTION_CLOSED;
|
||||||
string_list_clear(&affected_refnames, 0);
|
string_list_clear(&affected_refnames, 0);
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user