summaryrefslogtreecommitdiff
path: root/fetch-pack.c
diff options
context:
space:
mode:
authorBrandon Williams <bmwill@google.com>2018-04-23 22:46:24 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-04-24 02:24:40 (GMT)
commit5e3548ef161d4d284e35cf5f5d6a181ba4fe707b (patch)
treea1e5175546417ed701dbe109b683142b95111261 /fetch-pack.c
parentff473221b4d6cf0894ba47370492d853a36c024d (diff)
downloadgit-5e3548ef161d4d284e35cf5f5d6a181ba4fe707b.zip
git-5e3548ef161d4d284e35cf5f5d6a181ba4fe707b.tar.gz
git-5e3548ef161d4d284e35cf5f5d6a181ba4fe707b.tar.bz2
fetch: send server options when using protocol v2
Teach fetch 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 performing a fetch communicating 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 'fetch-pack.c')
-rw-r--r--fetch-pack.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fetch-pack.c b/fetch-pack.c
index 216d136..199eb8a 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -1174,6 +1174,13 @@ static int send_fetch_request(int fd_out, const struct fetch_pack_args *args,
packet_buf_write(&req_buf, "command=fetch");
if (server_supports_v2("agent", 0))
packet_buf_write(&req_buf, "agent=%s", git_user_agent_sanitized());
+ if (args->server_options && args->server_options->nr &&
+ server_supports_v2("server-option", 1)) {
+ int i;
+ for (i = 0; i < args->server_options->nr; i++)
+ packet_write_fmt(fd_out, "server-option=%s",
+ args->server_options->items[i].string);
+ }
packet_buf_delim(&req_buf);
if (args->use_thin_pack)