fetch-pack: add a deref_without_lazy_fetch_extended()
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> Signed-off-by: Derrick Stolee <derrickstolee@github.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
9fd512c8d6
commit
a6e65fb39c
25
fetch-pack.c
25
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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user