Merge branch 'sb/object-store-lookup'
lookup_commit_reference() and friends have been updated to find in-core object for a specific in-core repository instance. * sb/object-store-lookup: (32 commits) commit.c: allow lookup_commit_reference to handle arbitrary repositories commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories tag.c: allow deref_tag to handle arbitrary repositories object.c: allow parse_object to handle arbitrary repositories object.c: allow parse_object_buffer to handle arbitrary repositories commit.c: allow get_cached_commit_buffer to handle arbitrary repositories commit.c: allow set_commit_buffer to handle arbitrary repositories commit.c: migrate the commit buffer to the parsed object store commit-slabs: remove realloc counter outside of slab struct commit.c: allow parse_commit_buffer to handle arbitrary repositories tag: allow parse_tag_buffer to handle arbitrary repositories tag: allow lookup_tag to handle arbitrary repositories commit: allow lookup_commit to handle arbitrary repositories tree: allow lookup_tree to handle arbitrary repositories blob: allow lookup_blob to handle arbitrary repositories object: allow lookup_object to handle arbitrary repositories object: allow object_as_type to handle arbitrary repositories tag: add repository argument to deref_tag tag: add repository argument to parse_tag_buffer tag: add repository argument to lookup_tag ...
This commit is contained in:
36
fetch-pack.c
36
fetch-pack.c
@ -78,7 +78,7 @@ static void cache_one_alternate(const char *refname,
|
||||
void *vcache)
|
||||
{
|
||||
struct alternate_object_cache *cache = vcache;
|
||||
struct object *obj = parse_object(oid);
|
||||
struct object *obj = parse_object(the_repository, oid);
|
||||
|
||||
if (!obj || (obj->flags & ALTERNATE))
|
||||
return;
|
||||
@ -109,7 +109,9 @@ static int rev_list_insert_ref(struct fetch_negotiator *negotiator,
|
||||
const char *refname,
|
||||
const struct object_id *oid)
|
||||
{
|
||||
struct object *o = deref_tag(parse_object(oid), refname, 0);
|
||||
struct object *o = deref_tag(the_repository,
|
||||
parse_object(the_repository, oid),
|
||||
refname, 0);
|
||||
|
||||
if (o && o->type == OBJ_COMMIT)
|
||||
negotiator->add_tip(negotiator, (struct commit *)o);
|
||||
@ -251,7 +253,7 @@ static int find_common(struct fetch_negotiator *negotiator,
|
||||
* interested in the case we *know* the object is
|
||||
* reachable and we have already scanned it.
|
||||
*/
|
||||
if (((o = lookup_object(remote->hash)) != NULL) &&
|
||||
if (((o = lookup_object(the_repository, remote->hash)) != NULL) &&
|
||||
(o->flags & COMPLETE)) {
|
||||
continue;
|
||||
}
|
||||
@ -325,10 +327,10 @@ static int find_common(struct fetch_negotiator *negotiator,
|
||||
if (skip_prefix(line, "unshallow ", &arg)) {
|
||||
if (get_oid_hex(arg, &oid))
|
||||
die(_("invalid unshallow line: %s"), line);
|
||||
if (!lookup_object(oid.hash))
|
||||
if (!lookup_object(the_repository, oid.hash))
|
||||
die(_("object not found: %s"), line);
|
||||
/* make sure that it is parsed as shallow */
|
||||
if (!parse_object(&oid))
|
||||
if (!parse_object(the_repository, &oid))
|
||||
die(_("error in object: %s"), line);
|
||||
if (unregister_shallow(&oid))
|
||||
die(_("no shallow found: %s"), line);
|
||||
@ -387,8 +389,10 @@ static int find_common(struct fetch_negotiator *negotiator,
|
||||
case ACK_ready:
|
||||
case ACK_continue: {
|
||||
struct commit *commit =
|
||||
lookup_commit(result_oid);
|
||||
lookup_commit(the_repository,
|
||||
result_oid);
|
||||
int was_common;
|
||||
|
||||
if (!commit)
|
||||
die(_("invalid commit %s"), oid_to_hex(result_oid));
|
||||
was_common = negotiator->ack(negotiator, commit);
|
||||
@ -462,14 +466,14 @@ static struct commit_list *complete;
|
||||
|
||||
static int mark_complete(const struct object_id *oid)
|
||||
{
|
||||
struct object *o = parse_object(oid);
|
||||
struct object *o = parse_object(the_repository, oid);
|
||||
|
||||
while (o && o->type == OBJ_TAG) {
|
||||
struct tag *t = (struct tag *) o;
|
||||
if (!t->tagged)
|
||||
break; /* broken repository */
|
||||
o->flags |= COMPLETE;
|
||||
o = parse_object(&t->tagged->oid);
|
||||
o = parse_object(the_repository, &t->tagged->oid);
|
||||
}
|
||||
if (o && o->type == OBJ_COMMIT) {
|
||||
struct commit *commit = (struct commit *)o;
|
||||
@ -670,7 +674,7 @@ static void mark_complete_and_common_ref(struct fetch_negotiator *negotiator,
|
||||
|
||||
if (!has_object_file_with_flags(&ref->old_oid, flags))
|
||||
continue;
|
||||
o = parse_object(&ref->old_oid);
|
||||
o = parse_object(the_repository, &ref->old_oid);
|
||||
if (!o)
|
||||
continue;
|
||||
|
||||
@ -701,7 +705,9 @@ static void mark_complete_and_common_ref(struct fetch_negotiator *negotiator,
|
||||
* Don't mark them common yet; the server has to be told so first.
|
||||
*/
|
||||
for (ref = *refs; ref; ref = ref->next) {
|
||||
struct object *o = deref_tag(lookup_object(ref->old_oid.hash),
|
||||
struct object *o = deref_tag(the_repository,
|
||||
lookup_object(the_repository,
|
||||
ref->old_oid.hash),
|
||||
NULL, 0);
|
||||
|
||||
if (!o || o->type != OBJ_COMMIT || !(o->flags & COMPLETE))
|
||||
@ -729,7 +735,7 @@ static int everything_local(struct fetch_pack_args *args,
|
||||
const struct object_id *remote = &ref->old_oid;
|
||||
struct object *o;
|
||||
|
||||
o = lookup_object(remote->hash);
|
||||
o = lookup_object(the_repository, remote->hash);
|
||||
if (!o || !(o->flags & COMPLETE)) {
|
||||
retval = 0;
|
||||
print_verbose(args, "want %s (%s)", oid_to_hex(remote),
|
||||
@ -1032,7 +1038,7 @@ static void add_wants(const struct ref *wants, struct strbuf *req_buf)
|
||||
* interested in the case we *know* the object is
|
||||
* reachable and we have already scanned it.
|
||||
*/
|
||||
if (((o = lookup_object(remote->hash)) != NULL) &&
|
||||
if (((o = lookup_object(the_repository, remote->hash)) != NULL) &&
|
||||
(o->flags & COMPLETE)) {
|
||||
continue;
|
||||
}
|
||||
@ -1196,7 +1202,7 @@ static int process_acks(struct fetch_negotiator *negotiator,
|
||||
if (!get_oid_hex(arg, &oid)) {
|
||||
struct commit *commit;
|
||||
oidset_insert(common, &oid);
|
||||
commit = lookup_commit(&oid);
|
||||
commit = lookup_commit(the_repository, &oid);
|
||||
negotiator->ack(negotiator, commit);
|
||||
}
|
||||
continue;
|
||||
@ -1235,10 +1241,10 @@ static void receive_shallow_info(struct fetch_pack_args *args,
|
||||
if (skip_prefix(reader->line, "unshallow ", &arg)) {
|
||||
if (get_oid_hex(arg, &oid))
|
||||
die(_("invalid unshallow line: %s"), reader->line);
|
||||
if (!lookup_object(oid.hash))
|
||||
if (!lookup_object(the_repository, oid.hash))
|
||||
die(_("object not found: %s"), reader->line);
|
||||
/* make sure that it is parsed as shallow */
|
||||
if (!parse_object(&oid))
|
||||
if (!parse_object(the_repository, &oid))
|
||||
die(_("error in object: %s"), reader->line);
|
||||
if (unregister_shallow(&oid))
|
||||
die(_("no shallow found: %s"), reader->line);
|
||||
|
Reference in New Issue
Block a user