connect: make write_fetch_command_and_capabilities() more generic
Refactor write_fetch_command_and_capabilities(), enabling it to serve
both fetch and additional commands.
In this context, "command" refers to the "operations" supported by
Git's wire protocol Documentation/gitprotocol-v2.adoc, such as a Git
subcommand (e.g., git-fetch(1)) or a server-side operation like
"object-info" as implemented in commit a2ba162cda
(object-info: support for retrieving object info, 2021-04-20).
Refactor the function signature to accept a command instead of the
hardcoded "fetch".
Helped-by: Jonathan Tan <jonathantanmy@google.com>
Helped-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Calvin Wan <calvinwan@google.com>
Signed-off-by: Eric Ju <eric.peijian@gmail.com>
Signed-off-by: Pablo Sabater <pabloosabaterr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
next^2
parent
40865f70d4
commit
eb1fbc64b7
|
|
@ -700,16 +700,16 @@ int server_supports(const char *feature)
|
|||
return !!server_feature_value(feature, NULL);
|
||||
}
|
||||
|
||||
void write_fetch_command_and_capabilities(struct strbuf *req_buf,
|
||||
const struct string_list *server_options)
|
||||
void write_command_and_capabilities(struct strbuf *req_buf, const char *command,
|
||||
const struct string_list *server_options)
|
||||
{
|
||||
const char *hash_name;
|
||||
int advertise_sid = 0;
|
||||
|
||||
repo_config_get_bool(the_repository, "transfer.advertisesid", &advertise_sid);
|
||||
|
||||
ensure_server_supports_v2("fetch");
|
||||
packet_buf_write(req_buf, "command=fetch");
|
||||
ensure_server_supports_v2(command);
|
||||
packet_buf_write(req_buf, "command=%s", command);
|
||||
if (server_supports_v2("agent"))
|
||||
packet_buf_write(req_buf, "agent=%s", git_user_agent_sanitized());
|
||||
if (advertise_sid && server_supports_v2("session-id"))
|
||||
|
|
|
|||
|
|
@ -35,7 +35,11 @@ void check_stateless_delimiter(int stateless_rpc,
|
|||
const char *error);
|
||||
|
||||
struct string_list;
|
||||
void write_fetch_command_and_capabilities(struct strbuf *req_buf,
|
||||
const struct string_list *server_options);
|
||||
/*
|
||||
* Write a protocol v2 command request, along with the capability
|
||||
* advertisements, into req_buf.
|
||||
*/
|
||||
void write_command_and_capabilities(struct strbuf *req_buf, const char *command,
|
||||
const struct string_list *server_options);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1386,7 +1386,7 @@ static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out,
|
|||
int done_sent = 0;
|
||||
struct strbuf req_buf = STRBUF_INIT;
|
||||
|
||||
write_fetch_command_and_capabilities(&req_buf, args->server_options);
|
||||
write_command_and_capabilities(&req_buf, "fetch", args->server_options);
|
||||
|
||||
if (args->use_thin_pack)
|
||||
packet_buf_write(&req_buf, "thin-pack");
|
||||
|
|
@ -2253,7 +2253,7 @@ void negotiate_using_fetch(const struct oid_array *negotiation_restrict_tips,
|
|||
the_repository, "%d",
|
||||
negotiation_round);
|
||||
strbuf_reset(&req_buf);
|
||||
write_fetch_command_and_capabilities(&req_buf, server_options);
|
||||
write_command_and_capabilities(&req_buf, "fetch", server_options);
|
||||
|
||||
packet_buf_write(&req_buf, "wait-for-done");
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue