diff options
author | Brandon Williams <bmwill@google.com> | 2018-04-23 15:46:23 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-04-24 11:24:40 +0900 |
commit | ff473221b4d6cf0894ba47370492d853a36c024d (patch) | |
tree | 50b103baec013524704188718b2c46433ce4ce10 /builtin/ls-remote.c | |
parent | serve: introduce the server-option capability (diff) | |
download | tgif-ff473221b4d6cf0894ba47370492d853a36c024d.tar.xz |
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>
Diffstat (limited to 'builtin/ls-remote.c')
-rw-r--r-- | builtin/ls-remote.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/builtin/ls-remote.c b/builtin/ls-remote.c index 380c180270..3150bfb926 100644 --- a/builtin/ls-remote.c +++ b/builtin/ls-remote.c @@ -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)) |