mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
update_ref(): don't read old reference value before delete
If we are deleting the reference, then we don't need to read the reference's old value. It doesn't provide any race safety, because the value read just before the delete is no "better" than the value that would be read under lock during the delete. And even if the reference previously didn't exist, we can call delete_ref() on it if we don't provide an old_sha1 value. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
4eaa4bd800
commit
a1c9eb918b
|
@ -1692,13 +1692,13 @@ static int update_branch(struct branch *b)
|
|||
unsigned char old_sha1[20];
|
||||
struct strbuf err = STRBUF_INIT;
|
||||
|
||||
if (read_ref(b->name, old_sha1))
|
||||
hashclr(old_sha1);
|
||||
if (is_null_sha1(b->sha1)) {
|
||||
if (b->delete)
|
||||
delete_ref(b->name, old_sha1, 0);
|
||||
delete_ref(b->name, NULL, 0);
|
||||
return 0;
|
||||
}
|
||||
if (read_ref(b->name, old_sha1))
|
||||
hashclr(old_sha1);
|
||||
if (!force_update && !is_null_sha1(old_sha1)) {
|
||||
struct commit *old_cmit, *new_cmit;
|
||||
|
||||
|
|
Loading…
Reference in a new issue