ls-remote: send server options when using protocol v2
Teach ls-remote to optionally accept server options by specifying them on the cmdline via '-o' or '--server-option'. These server options are sent to the remote end when querying for the remote end's refs using protocol version 2. If communicating using a protocol other than v2 the provided options are ignored and not sent to the remote end. Signed-off-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
ecc3e5342d
commit
ff473221b4
@ -45,6 +45,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
||||
const char *uploadpack = NULL;
|
||||
const char **pattern = NULL;
|
||||
struct argv_array ref_prefixes = ARGV_ARRAY_INIT;
|
||||
struct string_list server_options = STRING_LIST_INIT_DUP;
|
||||
|
||||
struct remote *remote;
|
||||
struct transport *transport;
|
||||
@ -67,6 +68,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
||||
2, PARSE_OPT_NOCOMPLETE),
|
||||
OPT_BOOL(0, "symref", &show_symref_target,
|
||||
N_("show underlying ref in addition to the object pointed by it")),
|
||||
OPT_STRING_LIST('o', "server-option", &server_options, N_("server-specific"), N_("option to transmit")),
|
||||
OPT_END()
|
||||
};
|
||||
|
||||
@ -107,6 +109,8 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
||||
transport = transport_get(remote, NULL);
|
||||
if (uploadpack != NULL)
|
||||
transport_set_option(transport, TRANS_OPT_UPLOADPACK, uploadpack);
|
||||
if (server_options.nr)
|
||||
transport->server_options = &server_options;
|
||||
|
||||
ref = transport_get_remote_refs(transport, &ref_prefixes);
|
||||
if (transport_disconnect(transport))
|
||||
|
Reference in New Issue
Block a user