зеркало из https://github.com/microsoft/git.git
sha1-file: split OBJECT_INFO_FOR_PREFETCH
The OBJECT_INFO_FOR_PREFETCH bitflag was added to sha1-file.c in 0f4a4fb1
(sha1-file: support OBJECT_INFO_FOR_PREFETCH, 2019-03-29) and is used to
prevent the fetch_objects() method when enabled.
However, there is a problem with the current use. The definition of
OBJECT_INFO_FOR_PREFETCH is given by adding 32 to OBJECT_INFO_QUICK. This is
clearly stated above the definition (in a comment) that this is so
OBJECT_INFO_FOR_PREFETCH implies OBJECT_INFO_QUICK. The problem is that using
"flag & OBJECT_INFO_FOR_PREFETCH" means that OBJECT_INFO_QUICK also implies
OBJECT_INFO_FOR_PREFETCH.
Split out the single bit from OBJECT_INFO_FOR_PREFETCH into a new
OBJECT_INFO_SKIP_FETCH_OBJECT as the single bit and keep
OBJECT_INFO_FOR_PREFETCH as the union of two flags. This allows a clearer use
of flag checking while also keeping the implication of OBJECT_INFO_QUICK.
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
4dd351b194
Коммит
1793c79fd9
|
@ -277,10 +277,14 @@ struct object_info {
|
|||
#define OBJECT_INFO_IGNORE_LOOSE 16
|
||||
/*
|
||||
* Do not attempt to fetch the object if missing (even if fetch_is_missing is
|
||||
* nonzero). This is meant for bulk prefetching of missing blobs in a partial
|
||||
* clone. Implies OBJECT_INFO_QUICK.
|
||||
* nonzero).
|
||||
*/
|
||||
#define OBJECT_INFO_FOR_PREFETCH (32 + OBJECT_INFO_QUICK)
|
||||
#define OBJECT_INFO_SKIP_FETCH_OBJECT 32
|
||||
/*
|
||||
* This is meant for bulk prefetching of missing blobs in a partial
|
||||
* clone. Implies OBJECT_INFO_SKIP_FETCH_OBJECT and OBJECT_INFO_QUICK
|
||||
*/
|
||||
#define OBJECT_INFO_FOR_PREFETCH (OBJECT_INFO_SKIP_FETCH_OBJECT | OBJECT_INFO_QUICK)
|
||||
|
||||
int oid_object_info_extended(struct repository *r,
|
||||
const struct object_id *,
|
||||
|
|
|
@ -1379,7 +1379,7 @@ int oid_object_info_extended(struct repository *r, const struct object_id *oid,
|
|||
/* Check if it is a missing object */
|
||||
if (fetch_if_missing && repository_format_partial_clone &&
|
||||
!already_retried && r == the_repository &&
|
||||
!(flags & OBJECT_INFO_FOR_PREFETCH)) {
|
||||
!(flags & OBJECT_INFO_SKIP_FETCH_OBJECT)) {
|
||||
/*
|
||||
* TODO Investigate having fetch_object() return
|
||||
* TODO error/success and stopping the music here.
|
||||
|
|
Загрузка…
Ссылка в новой задаче