зеркало из https://github.com/microsoft/git.git
sha1_file: freshen pack objects before loose
When writing out an object file, we first check whether it
already exists and if so optimize out the write. Prior to
33d4221
, we did this by calling has_sha1_file(), which will
check for packed objects followed by loose. Since that
commit, we check loose objects first.
For the common case of a repository whose objects are mostly
packed, this means we will make a lot of extra access()
system calls checking for loose objects. We should follow
the same packed-then-loose order that all of our other
lookups use.
Reported-by: Stefan Saasen <ssaasen@atlassian.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
1385bb7ba3
Коммит
b5f52f372e
|
@ -3014,7 +3014,7 @@ int write_sha1_file(const void *buf, unsigned long len, const char *type, unsign
|
||||||
write_sha1_file_prepare(buf, len, type, sha1, hdr, &hdrlen);
|
write_sha1_file_prepare(buf, len, type, sha1, hdr, &hdrlen);
|
||||||
if (returnsha1)
|
if (returnsha1)
|
||||||
hashcpy(returnsha1, sha1);
|
hashcpy(returnsha1, sha1);
|
||||||
if (freshen_loose_object(sha1) || freshen_packed_object(sha1))
|
if (freshen_packed_object(sha1) || freshen_loose_object(sha1))
|
||||||
return 0;
|
return 0;
|
||||||
return write_loose_object(sha1, hdr, hdrlen, buf, len, 0);
|
return write_loose_object(sha1, hdr, hdrlen, buf, len, 0);
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче