diff --git a/builtin/cat-file.c b/builtin/cat-file.c index e1650b2921..8dcad2f5eb 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -724,10 +724,8 @@ static int get_remote_info(int argc, goto cleanup; } - gtransport->smart_options->object_info_oids = object_info_oids; - - gtransport->smart_options->object_info_results = results; - retval = transport_fetch_object_info(gtransport); + retval = transport_fetch_object_info(gtransport, object_info_oids, + results); cleanup: transport_disconnect(gtransport); return retval; diff --git a/fetch-object-info.c b/fetch-object-info.c index 4db879c2dc..fe26bf4bbc 100644 --- a/fetch-object-info.c +++ b/fetch-object-info.c @@ -11,7 +11,7 @@ /* Sends object-info command and its arguments into the request buffer. */ static void send_object_info_request(const int fd_out, const struct string_list *server_options, - struct oid_array *oids, + const struct oid_array *oids, unsigned ask_size) { struct strbuf req_buf = STRBUF_INIT; @@ -49,7 +49,7 @@ static int parse_object_size(const char *s, size_t *res) void fetch_object_info(const enum protocol_version version, const struct string_list *server_options, - struct oid_array *oids, + const struct oid_array *oids, struct packet_reader *reader, struct fetch_object_info_results *results, const int stateless_rpc, diff --git a/fetch-object-info.h b/fetch-object-info.h index 97ee5314c9..10cf9f5f63 100644 --- a/fetch-object-info.h +++ b/fetch-object-info.h @@ -26,7 +26,7 @@ struct oid_array; */ void fetch_object_info(enum protocol_version version, const struct string_list *server_options, - struct oid_array *oids, + const struct oid_array *oids, struct packet_reader *reader, struct fetch_object_info_results *results, int stateless_rpc, diff --git a/transport-helper.c b/transport-helper.c index 623463dcea..b69cb733d8 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -784,11 +784,14 @@ static int fetch_refs(struct transport *transport, return -1; } -static int fetch_object_info_helper(struct transport *transport) +static int fetch_object_info_helper(struct transport *transport, + const struct oid_array *oids, + struct fetch_object_info_results *results) { get_helper(transport); if (process_connect(transport, 0)) - return transport->vtable->fetch_object_info(transport); + return transport->vtable->fetch_object_info(transport, oids, + results); die(_("object-info requires protocol v2")); } diff --git a/transport-internal.h b/transport-internal.h index 60db0bedcd..a10b27cc81 100644 --- a/transport-internal.h +++ b/transport-internal.h @@ -7,6 +7,8 @@ struct ref; struct transport; struct strvec; struct transport_ls_refs_options; +struct oid_array; +struct fetch_object_info_results; struct transport_vtable { /** @@ -51,7 +53,9 @@ struct transport_vtable { * * Uses object-info capability of v2 protocol. */ - int (*fetch_object_info)(struct transport *transport); + int (*fetch_object_info)(struct transport *transport, + const struct oid_array *oids, + struct fetch_object_info_results *results); /** * Push the objects and refs. Send the necessary objects, and diff --git a/transport.c b/transport.c index 242fdea95b..abca9ac29a 100644 --- a/transport.c +++ b/transport.c @@ -433,7 +433,9 @@ static int get_bundle_uri(struct transport *transport) transport->bundles, stateless_rpc); } -static int fetch_object_info_via_pack(struct transport *transport) +static int fetch_object_info_via_pack(struct transport *transport, + const struct oid_array *oids, + struct fetch_object_info_results *results) { int ret = 0; struct git_transport_data *data = transport->data; @@ -450,9 +452,9 @@ static int fetch_object_info_via_pack(struct transport *transport) fetch_object_info(data->version, transport->server_options, - transport->smart_options->object_info_oids, + oids, &reader, - data->options.object_info_results, + results, transport->stateless_rpc, data->fd[1]); close(data->fd[0]); @@ -465,11 +467,13 @@ static int fetch_object_info_via_pack(struct transport *transport) return ret; } -int transport_fetch_object_info(struct transport *transport) +int transport_fetch_object_info(struct transport *transport, + const struct oid_array *oids, + struct fetch_object_info_results *results) { if (!transport->vtable->fetch_object_info) die(_("remote does not support object-info")); - return transport->vtable->fetch_object_info(transport); + return transport->vtable->fetch_object_info(transport, oids, results); } static int fetch_refs_via_pack(struct transport *transport, diff --git a/transport.h b/transport.h index 6948b65db9..39193d0077 100644 --- a/transport.h +++ b/transport.h @@ -57,9 +57,6 @@ struct git_transport_options { * common commits to this oidset instead of fetching any packfiles. */ struct oidset *acked_commits; - - struct oid_array *object_info_oids; - struct fetch_object_info_results *object_info_results; }; enum transport_family { @@ -317,7 +314,9 @@ int transport_fetch_refs(struct transport *transport, struct ref *refs); /* * Fetch the object info from remote */ -int transport_fetch_object_info(struct transport *transport); +int transport_fetch_object_info(struct transport *transport, + const struct oid_array *oids, + struct fetch_object_info_results *results); /* * If this flag is set, unlocking will avoid to call non-async-signal-safe