mirror of
https://github.com/git/git.git
synced 2024-11-27 12:03:55 +08:00
pack-objects: no fetch when allow-{any,promisor}
The options --missing=allow-{any,promisor} were introduced incaf3827e2f
("rev-list: add list-objects filtering support", 2017-11-22) with the following note in the commit message: This patch introduces handling of missing objects to help debugging and development of the "partial clone" mechanism, and once the mechanism is implemented, for a power user to perform operations that are missing-object aware without incurring the cost of checking if a missing link is expected. The idea that these options are missing-object aware (and thus do not need to lazily fetch objects, unlike unaware commands that assume that all objects are present) are assumed in later commits such as07ef3c6604
("fetch test: use more robust test for filtered objects", 2020-01-15). However, the current implementations of these options use has_object_file(), which indeed lazily fetches missing objects. Teach these implementations not to do so. Also, update the documentation of these options to be clearer. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3318238db9
commit
ee47243d76
@ -270,15 +270,18 @@ So does `git bundle` (see linkgit:git-bundle[1]) when it creates a bundle.
|
||||
This option specifies how missing objects are handled.
|
||||
+
|
||||
The form '--missing=error' requests that pack-objects stop with an error if
|
||||
a missing object is encountered. This is the default action.
|
||||
a missing object is encountered. If the repository is a partial clone, an
|
||||
attempt to fetch missing objects will be made before declaring them missing.
|
||||
This is the default action.
|
||||
+
|
||||
The form '--missing=allow-any' will allow object traversal to continue
|
||||
if a missing object is encountered. Missing objects will silently be
|
||||
omitted from the results.
|
||||
if a missing object is encountered. No fetch of a missing object will occur.
|
||||
Missing objects will silently be omitted from the results.
|
||||
+
|
||||
The form '--missing=allow-promisor' is like 'allow-any', but will only
|
||||
allow object traversal to continue for EXPECTED promisor missing objects.
|
||||
Unexpected missing object will raise an error.
|
||||
No fetch of a missing object will occur. An unexpected missing object will
|
||||
raise an error.
|
||||
|
||||
--exclude-promisor-objects::
|
||||
Omit objects that are known to be in the promisor remote. (This
|
||||
|
@ -3048,7 +3048,7 @@ static void show_object__ma_allow_any(struct object *obj, const char *name, void
|
||||
* Quietly ignore ALL missing objects. This avoids problems with
|
||||
* staging them now and getting an odd error later.
|
||||
*/
|
||||
if (!has_object_file(&obj->oid))
|
||||
if (!has_object(the_repository, &obj->oid, 0))
|
||||
return;
|
||||
|
||||
show_object(obj, name, data);
|
||||
@ -3062,7 +3062,7 @@ static void show_object__ma_allow_promisor(struct object *obj, const char *name,
|
||||
* Quietly ignore EXPECTED missing objects. This avoids problems with
|
||||
* staging them now and getting an odd error later.
|
||||
*/
|
||||
if (!has_object_file(&obj->oid) && is_promisor_object(&obj->oid))
|
||||
if (!has_object(the_repository, &obj->oid, 0) && is_promisor_object(&obj->oid))
|
||||
return;
|
||||
|
||||
show_object(obj, name, data);
|
||||
|
Loading…
Reference in New Issue
Block a user