All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] clone: send server options when using protocol v2
@ 2019-04-05 20:44 Jonathan Tan
  2019-04-06 11:57 ` Jonathan Nieder
                   ` (3 more replies)
  0 siblings, 4 replies; 22+ messages in thread
From: Jonathan Tan @ 2019-04-05 20:44 UTC (permalink / raw)
  To: git; +Cc: Jonathan Tan

Commit 5e3548ef16 ("fetch: send server options when using protocol v2",
2018-04-24) taught "fetch" the ability to send server options when using
protocol v2, but not "clone". This ability is triggered by "-o" or
"--server-option".

Teach "clone" the same ability, except that because "clone" already
has "-o" for another parameter, teach "clone" only to receive
"--server-option".

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
---
 Documentation/git-clone.txt |  7 +++++++
 builtin/clone.c             |  6 ++++++
 t/t5702-protocol-v2.sh      | 11 +++++++++++
 3 files changed, 24 insertions(+)

diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 2fd12524f9..5b79da359c 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -131,6 +131,13 @@ objects from the source repository into a pack in the cloned repository.
 	is specified. This flag forces progress status even if the
 	standard error stream is not directed to a terminal.
 
+--server-option=<option>::
+	Transmit the given string to the server when communicating using
+	protocol version 2.  The given string must not contain a NUL or LF
+	character.
+	When multiple `--server-option=<option>` are given, they are all
+	sent to the other side in the order listed on the command line.
+
 --no-checkout::
 -n::
 	No checkout of HEAD is performed after the clone is complete.
diff --git a/builtin/clone.c b/builtin/clone.c
index 50bde99618..625d47c1f4 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -66,6 +66,7 @@ static int option_dissociate;
 static int max_jobs = -1;
 static struct string_list option_recurse_submodules = STRING_LIST_INIT_NODUP;
 static struct list_objects_filter_options filter_options;
+static struct string_list server_options = STRING_LIST_INIT_DUP;
 
 static int recurse_submodules_cb(const struct option *opt,
 				 const char *arg, int unset)
@@ -137,6 +138,8 @@ static struct option builtin_clone_options[] = {
 		   N_("separate git dir from working tree")),
 	OPT_STRING_LIST('c', "config", &option_config, N_("key=value"),
 			N_("set config inside the new repository")),
+	OPT_STRING_LIST(0, "server-option", &server_options, N_("server-specific"),
+			N_("option to transmit")),
 	OPT_SET_INT('4', "ipv4", &family, N_("use IPv4 addresses only"),
 			TRANSPORT_FAMILY_IPV4),
 	OPT_SET_INT('6', "ipv6", &family, N_("use IPv6 addresses only"),
@@ -1136,6 +1139,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
 		transport_set_option(transport, TRANS_OPT_UPLOADPACK,
 				     option_upload_pack);
 
+	if (server_options.nr)
+		transport->server_options = &server_options;
+
 	if (filter_options.choice) {
 		struct strbuf expanded_filter_spec = STRBUF_INIT;
 		expand_list_objects_filter_spec(&filter_options,
diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh
index e112b6086c..5b28d88401 100755
--- a/t/t5702-protocol-v2.sh
+++ b/t/t5702-protocol-v2.sh
@@ -251,6 +251,17 @@ test_expect_success 'server-options are sent when fetching' '
 	grep "server-option=world" log
 '
 
+test_expect_success 'server-options are sent when cloning' '
+	test_when_finished "rm -rf log myclone" &&
+
+	GIT_TRACE_PACKET="$(pwd)/log" git -c protocol.version=2 \
+		clone --server-option=hello --server-option=world \
+		"file://$(pwd)/file_parent" myclone &&
+
+	grep "server-option=hello" log &&
+	grep "server-option=world" log
+'
+
 test_expect_success 'upload-pack respects config using protocol v2' '
 	git init server &&
 	write_script server/.git/hook <<-\EOF &&
-- 
2.21.0.392.gf8f6787159e-goog


^ permalink raw reply related	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2019-04-15  9:43 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-05 20:44 [PATCH] clone: send server options when using protocol v2 Jonathan Tan
2019-04-06 11:57 ` Jonathan Nieder
2019-04-08 17:11   ` Jonathan Tan
2019-04-09 15:24     ` Junio C Hamano
2019-04-09 18:49       ` Jonathan Tan
2019-04-09 20:31 ` [PATCH v2 0/2] Server options when cloning Jonathan Tan
2019-04-09 20:31   ` [PATCH v2 1/2] transport: warn if server options are unsupported Jonathan Tan
2019-04-09 20:45     ` Jonathan Nieder
2019-04-10  3:51       ` Junio C Hamano
2019-04-09 20:31   ` [PATCH v2 2/2] clone: send server options when using protocol v2 Jonathan Tan
2019-04-09 20:46     ` Jonathan Nieder
2019-04-11 20:30 ` [PATCH v3 0/2] Server options when cloning Jonathan Tan
2019-04-11 20:30   ` [PATCH v3 1/2] transport: warn if server options are unsupported Jonathan Tan
2019-04-12  5:35     ` Junio C Hamano
2019-04-11 20:30   ` [PATCH v3 2/2] clone: send server options when using protocol v2 Jonathan Tan
2019-04-12 19:51 ` [PATCH v4 0/2] Server options when cloning Jonathan Tan
2019-04-12 19:51   ` [PATCH v4 1/2] transport: die if server options are unsupported Jonathan Tan
2019-04-12 20:12     ` SZEDER Gábor
2019-04-15  4:48       ` Re* " Junio C Hamano
2019-04-15  4:54         ` Junio C Hamano
2019-04-15  9:43         ` SZEDER Gábor
2019-04-12 19:51   ` [PATCH v4 2/2] clone: send server options when using protocol v2 Jonathan Tan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.