Message ID | RFC-patch-v2-03.36-7823a177fd7-20220418T165545Z-avarab@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | a6e65fb39caf18259c660c1c7910d5bf80bc15cb |
Headers | show |
Series | bundle-uri: a "dumb CDN" for git + TOC format | expand |
On 4/18/2022 1:23 PM, Ævar Arnfjörð Bjarmason wrote: > -static struct commit *deref_without_lazy_fetch(const struct object_id *oid, > - int mark_tags_complete) > +static struct commit *deref_without_lazy_fetch_extended(const struct object_id *oid, > + int mark_tags_complete, > + enum object_type *type, > + unsigned int oi_flags) > { > - enum object_type type; > - struct object_info info = { .typep = &type }; > + struct object_info info = { .typep = type }; > struct commit *commit; Since we now dereference 'type', should we have a BUG() statement here if type is NULL? > > commit = lookup_commit_in_graph(the_repository, oid); > @@ -128,9 +129,9 @@ static struct commit *deref_without_lazy_fetch(const struct object_id *oid, > > while (1) { > if (oid_object_info_extended(the_repository, oid, &info, > - OBJECT_INFO_SKIP_FETCH_OBJECT | OBJECT_INFO_QUICK)) > + oi_flags)) > return NULL; > - if (type == OBJ_TAG) { > + if (*type == OBJ_TAG) { > struct tag *tag = (struct tag *) > parse_object(the_repository, oid); > > @@ -144,7 +145,7 @@ static struct commit *deref_without_lazy_fetch(const struct object_id *oid, > } > } > > - if (type == OBJ_COMMIT) { > + if (*type == OBJ_COMMIT) { > struct commit *commit = lookup_commit(the_repository, oid); > if (!commit || repo_parse_commit(the_repository, commit)) > return NULL; > @@ -154,6 +155,16 @@ static struct commit *deref_without_lazy_fetch(const struct object_id *oid, > return NULL; > } > > + nit: extraneous newline. > +static struct commit *deref_without_lazy_fetch(const struct object_id *oid, > + int mark_tags_complete) Thanks, -Stolee
diff --git a/fetch-pack.c b/fetch-pack.c index 4e1e88eea09..d0aa3a5c229 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -115,11 +115,12 @@ static void for_each_cached_alternate(struct fetch_negotiator *negotiator, cb(negotiator, cache.items[i]); } -static struct commit *deref_without_lazy_fetch(const struct object_id *oid, - int mark_tags_complete) +static struct commit *deref_without_lazy_fetch_extended(const struct object_id *oid, + int mark_tags_complete, + enum object_type *type, + unsigned int oi_flags) { - enum object_type type; - struct object_info info = { .typep = &type }; + struct object_info info = { .typep = type }; struct commit *commit; commit = lookup_commit_in_graph(the_repository, oid); @@ -128,9 +129,9 @@ static struct commit *deref_without_lazy_fetch(const struct object_id *oid, while (1) { if (oid_object_info_extended(the_repository, oid, &info, - OBJECT_INFO_SKIP_FETCH_OBJECT | OBJECT_INFO_QUICK)) + oi_flags)) return NULL; - if (type == OBJ_TAG) { + if (*type == OBJ_TAG) { struct tag *tag = (struct tag *) parse_object(the_repository, oid); @@ -144,7 +145,7 @@ static struct commit *deref_without_lazy_fetch(const struct object_id *oid, } } - if (type == OBJ_COMMIT) { + if (*type == OBJ_COMMIT) { struct commit *commit = lookup_commit(the_repository, oid); if (!commit || repo_parse_commit(the_repository, commit)) return NULL; @@ -154,6 +155,16 @@ static struct commit *deref_without_lazy_fetch(const struct object_id *oid, return NULL; } + +static struct commit *deref_without_lazy_fetch(const struct object_id *oid, + int mark_tags_complete) +{ + enum object_type type; + unsigned flags = OBJECT_INFO_SKIP_FETCH_OBJECT | OBJECT_INFO_QUICK; + return deref_without_lazy_fetch_extended(oid, mark_tags_complete, + &type, flags); +} + static int rev_list_insert_ref(struct fetch_negotiator *negotiator, const struct object_id *oid) {
Add a version of the deref_without_lazy_fetch function which can be called with custom oi_flags and to grab information about the "object_type". This will be used for the bundle-uri client in a subsequent commit. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- fetch-pack.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-)