summaryrefslogtreecommitdiff
path: root/transport.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2019-05-08 15:37:25 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-05-08 15:37:25 (GMT)
commit6d3df8ef01b95539539cd5b22304eff27ea1322b (patch)
treec5caa63baa46af04fded5b616e9b41b1fe362f92 /transport.c
parentea2dab1abbf14bfa7dd5299c9bb86d0f70aae019 (diff)
parent6e98305985555ced61971ca0170dd976554193c0 (diff)
downloadgit-6d3df8ef01b95539539cd5b22304eff27ea1322b.zip
git-6d3df8ef01b95539539cd5b22304eff27ea1322b.tar.gz
git-6d3df8ef01b95539539cd5b22304eff27ea1322b.tar.bz2
Merge branch 'jt/clone-server-option'
"git clone" learned a new --server-option option when talking over the protocol version 2. * jt/clone-server-option: clone: send server options when using protocol v2 transport: die if server options are unsupported
Diffstat (limited to 'transport.c')
-rw-r--r--transport.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/transport.c b/transport.c
index 365ea57..f1fcd2c 100644
--- a/transport.c
+++ b/transport.c
@@ -252,6 +252,14 @@ static int connect_setup(struct transport *transport, int for_push)
return 0;
}
+static void die_if_server_options(struct transport *transport)
+{
+ if (!transport->server_options || !transport->server_options->nr)
+ return;
+ advise(_("see protocol.version in 'git help config' for more details"));
+ die(_("server options require protocol version 2 or later"));
+}
+
/*
* Obtains the protocol version from the transport and writes it to
* transport->data->version, first connecting if not already connected.
@@ -286,6 +294,7 @@ static struct ref *handshake(struct transport *transport, int for_push,
break;
case protocol_v1:
case protocol_v0:
+ die_if_server_options(transport);
get_remote_heads(&reader, &refs,
for_push ? REF_NORMAL : 0,
&data->extra_have,
@@ -362,6 +371,7 @@ static int fetch_refs_via_pack(struct transport *transport,
break;
case protocol_v1:
case protocol_v0:
+ die_if_server_options(transport);
refs = fetch_pack(&args, data->fd,
refs_tmp ? refs_tmp : transport->remote_refs,
to_fetch, nr_heads, &data->shallow,