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>
maint
parent
0f4a4fb1c4
commit
31f5256c82
|
@ -282,10 +282,14 @@ struct object_info {
|
||||||
#define OBJECT_INFO_IGNORE_LOOSE 16
|
#define OBJECT_INFO_IGNORE_LOOSE 16
|
||||||
/*
|
/*
|
||||||
* Do not attempt to fetch the object if missing (even if fetch_is_missing is
|
* 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
|
* nonzero).
|
||||||
* clone. Implies OBJECT_INFO_QUICK.
|
|
||||||
*/
|
*/
|
||||||
#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,
|
int oid_object_info_extended(struct repository *r,
|
||||||
const struct object_id *,
|
const struct object_id *,
|
||||||
|
|
|
@ -1371,7 +1371,7 @@ int oid_object_info_extended(struct repository *r, const struct object_id *oid,
|
||||||
/* Check if it is a missing object */
|
/* Check if it is a missing object */
|
||||||
if (fetch_if_missing && repository_format_partial_clone &&
|
if (fetch_if_missing && repository_format_partial_clone &&
|
||||||
!already_retried && r == the_repository &&
|
!already_retried && r == the_repository &&
|
||||||
!(flags & OBJECT_INFO_FOR_PREFETCH)) {
|
!(flags & OBJECT_INFO_SKIP_FETCH_OBJECT)) {
|
||||||
/*
|
/*
|
||||||
* TODO Investigate having fetch_object() return
|
* TODO Investigate having fetch_object() return
|
||||||
* TODO error/success and stopping the music here.
|
* TODO error/success and stopping the music here.
|
||||||
|
|
Loading…
Reference in New Issue