All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Beller <sbeller@google.com>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: Brandon Williams <bmwill@google.com>,
	"git@vger.kernel.org" <git@vger.kernel.org>,
	Bryan Turner <bturner@atlassian.com>,
	Jeff Hostetler <git@jeffhostetler.com>,
	Junio C Hamano <gitster@pobox.com>,
	Jonathan Tan <jonathantanmy@google.com>,
	Jeff King <peff@peff.net>, William Yan <wyan@google.com>
Subject: Re: [PATCH 1/5] connect: split git:// setup into a separate function
Date: Mon, 23 Oct 2017 15:16:13 -0700	[thread overview]
Message-ID: <CAGZ79kYwARXNWRS4AgwTP7peZiWiwCBvWFiEr9TbpbWjgysfZA@mail.gmail.com> (raw)
In-Reply-To: <20171023212916.4aarismli6io4ro6@aiede.mtv.corp.google.com>

On Mon, Oct 23, 2017 at 2:29 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
> The git_connect function is growing long.  Split the
> PROTO_GIT-specific portion to a separate function to make it easier to
> read.
>
> No functional change intended.
>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>

This also looks good to me.

unrelated:
Patch 2 was very easy to review using "log -p -w --color-moved",
this one however was not. This is because -w caused the diff machinery
to generate a completely different diff. (Not showing the new function
completely but some weird function header trickery. The white space
mangled output is below; most of it was colored "moved")

I had to have -w as otherwise --color-moved would not work,
so maybe we want to have an option to ignore white space for the
sake of move detection only, not affecting the diff in general;
maybe '--ignore-white-space-in-move-detection'?

I think once this option is given, all we have to do is pay attention to
this option in diff.c#moved_entry_cmp/next_byte, which is best built
on top of Peffs recent fixes origin/jk/diff-color-moved-fix.
Would that be of interest for people?

Thanks,
Stefan

diff --git a/connect.c b/connect.c
index 7fbd396b35..068e70caad 100644
--- a/connect.c
+++ b/connect.c
@@ -851,36 +851,16 @@ static enum ssh_variant
determine_ssh_variant(const char *ssh_command,
 }

 /*
- * This returns a dummy child_process if the transport protocol does not
- * need fork(2), or a struct child_process object if it does.  Once done,
- * finish the connection with finish_connect() with the value returned from
- * this function (it is safe to call finish_connect() with NULL to support
- * the former case).
+ * Open a connection using Git's native protocol.
  *
- * If it returns, the connect is successful; it just dies on errors (this
- * will hopefully be changed in a libification effort, to return NULL when
- * the connection failed).
+ * The caller is responsible for freeing hostandport, but this function may
+ * modify it (for example, to truncate it to remove the port part).
  */
-struct child_process *git_connect(int fd[2], const char *url,
-                                  const char *prog, int flags)
+static struct child_process *git_connect_git(int fd[2], char *hostandport,
+                                             const char *path, const
char *prog,
+                                             int flags)
 {
-        char *hostandport, *path;
         struct child_process *conn = &no_fork;
-        enum protocol protocol;
-
-        /* Without this we cannot rely on waitpid() to tell
-         * what happened to our children.
-         */
-        signal(SIGCHLD, SIG_DFL);
-
-        protocol = parse_connect_url(url, &hostandport, &path);
-        if ((flags & CONNECT_DIAG_URL) && (protocol != PROTO_SSH)) {
-                printf("Diag: url=%s\n", url ? url : "NULL");
-                printf("Diag: protocol=%s\n", prot_name(protocol));
-                printf("Diag: hostandport=%s\n", hostandport ?
hostandport : "NULL");
-                printf("Diag: path=%s\n", path ? path : "NULL");
-                conn = NULL;
-        } else if (protocol == PROTO_GIT) {
         struct strbuf request = STRBUF_INIT;
         /*
          * Set up virtual host information based on where we will
@@ -925,6 +905,41 @@ struct child_process *git_connect(int fd[2],
const char *url,

         free(target_host);
         strbuf_release(&request);
+        return conn;
+}
+
+/*
+ * This returns a dummy child_process if the transport protocol does not
+ * need fork(2), or a struct child_process object if it does.  Once done,
+ * finish the connection with finish_connect() with the value returned from
+ * this function (it is safe to call finish_connect() with NULL to support
+ * the former case).
+ *
+ * If it returns, the connect is successful; it just dies on errors (this
+ * will hopefully be changed in a libification effort, to return NULL when
+ * the connection failed).
+ */
+struct child_process *git_connect(int fd[2], const char *url,
+                                  const char *prog, int flags)
+{
+        char *hostandport, *path;
+        struct child_process *conn = &no_fork;
+        enum protocol protocol;
+
+        /* Without this we cannot rely on waitpid() to tell
+         * what happened to our children.
+         */
+        signal(SIGCHLD, SIG_DFL);
+
+        protocol = parse_connect_url(url, &hostandport, &path);
+        if ((flags & CONNECT_DIAG_URL) && (protocol != PROTO_SSH)) {
+                printf("Diag: url=%s\n", url ? url : "NULL");
+                printf("Diag: protocol=%s\n", prot_name(protocol));
+                printf("Diag: hostandport=%s\n", hostandport ?
hostandport : "NULL");
+                printf("Diag: path=%s\n", path ? path : "NULL");
+                conn = NULL;
+        } else if (protocol == PROTO_GIT) {
+                conn = git_connect_git(fd, hostandport, path, prog, flags);
         } else {
                 struct strbuf cmd = STRBUF_INIT;
                 const char *const *var;

  reply	other threads:[~2017-10-23 22:16 UTC|newest]

Thread overview: 161+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-13 21:54 [PATCH 0/8] protocol transition Brandon Williams
2017-09-13 21:54 ` [PATCH 1/8] pkt-line: add packet_write function Brandon Williams
2017-09-13 21:54 ` [PATCH 2/8] protocol: introduce protocol extention mechanisms Brandon Williams
2017-09-13 22:27   ` Stefan Beller
2017-09-18 17:02     ` Brandon Williams
2017-09-18 18:34       ` Stefan Beller
2017-09-18 19:58         ` Brandon Williams
2017-09-18 20:06           ` Stefan Beller
2017-09-13 21:54 ` [PATCH 3/8] daemon: recognize hidden request arguments Brandon Williams
2017-09-13 22:31   ` Stefan Beller
2017-09-18 16:56     ` Brandon Williams
2017-09-21  0:24   ` Jonathan Tan
2017-09-21  0:31     ` Jonathan Tan
2017-09-21 21:55       ` Brandon Williams
2017-09-13 21:54 ` [PATCH 4/8] upload-pack, receive-pack: introduce protocol version 1 Brandon Williams
2017-09-13 21:54 ` [PATCH 5/8] connect: teach client to recognize v1 server response Brandon Williams
2017-09-13 21:54 ` [PATCH 6/8] connect: tell server that the client understands v1 Brandon Williams
2017-09-13 21:54 ` [PATCH 7/8] http: " Brandon Williams
2017-09-13 21:54 ` [PATCH 8/8] i5700: add interop test for protocol transition Brandon Williams
2017-09-20 18:48 ` [PATCH 1.5/8] connect: die when a capability line comes after a ref Brandon Williams
2017-09-20 19:14   ` Jeff King
2017-09-20 20:06     ` Brandon Williams
2017-09-20 20:48       ` Jonathan Nieder
2017-09-21  3:02       ` Junio C Hamano
2017-09-21 20:45       ` [PATCH] connect: in ref advertisement, shallows are last Jonathan Tan
2017-09-21 23:45         ` [PATCH v2] " Jonathan Tan
2017-09-22  0:00           ` Brandon Williams
2017-09-22  0:08             ` [PATCH v3] " Jonathan Tan
2017-09-22  1:06               ` Junio C Hamano
2017-09-22  1:39                 ` Junio C Hamano
2017-09-22 16:45                   ` Brandon Williams
2017-09-22 20:15                     ` [PATCH v4] " Jonathan Tan
2017-09-22 21:01                       ` Brandon Williams
2017-09-22 22:16                         ` Jonathan Tan
2017-09-24  0:52                       ` Junio C Hamano
2017-09-26 18:21         ` [PATCH v5] " Jonathan Tan
2017-09-26 18:31           ` Brandon Williams
2017-09-26 23:56 ` [PATCH v2 0/9] protocol transition Brandon Williams
2017-09-26 23:56   ` [PATCH v2 1/9] connect: in ref advertisement, shallows are last Brandon Williams
2017-09-26 23:56   ` [PATCH v2 2/9] pkt-line: add packet_write function Brandon Williams
2017-09-26 23:56   ` [PATCH v2 3/9] protocol: introduce protocol extention mechanisms Brandon Williams
2017-09-27  5:17     ` Junio C Hamano
2017-09-27 11:23       ` Junio C Hamano
2017-09-29 21:20         ` Brandon Williams
2017-09-28 21:58       ` Brandon Williams
2017-09-27  6:30     ` Stefan Beller
2017-09-28 21:04       ` Brandon Williams
2017-09-26 23:56   ` [PATCH v2 4/9] daemon: recognize hidden request arguments Brandon Williams
2017-09-27  5:20     ` Junio C Hamano
2017-09-27 21:22       ` Brandon Williams
2017-09-28 16:57         ` Brandon Williams
2017-09-26 23:56   ` [PATCH v2 5/9] upload-pack, receive-pack: introduce protocol version 1 Brandon Williams
2017-09-27  5:23     ` Junio C Hamano
2017-09-27 21:29       ` Brandon Williams
2017-09-26 23:56   ` [PATCH v2 6/9] connect: teach client to recognize v1 server response Brandon Williams
2017-09-27  1:07     ` Junio C Hamano
2017-09-27 17:34       ` Brandon Williams
2017-09-27  5:29     ` Junio C Hamano
2017-09-28 22:08       ` Brandon Williams
2017-09-26 23:56   ` [PATCH v2 7/9] connect: tell server that the client understands v1 Brandon Williams
2017-09-27  6:21     ` Junio C Hamano
2017-09-27  6:29       ` Junio C Hamano
2017-09-29 21:32         ` Brandon Williams
2017-09-28 22:20       ` Brandon Williams
2017-09-26 23:56   ` [PATCH v2 8/9] http: " Brandon Williams
2017-09-27  6:24     ` Junio C Hamano
2017-09-27 21:36       ` Brandon Williams
2017-09-26 23:56   ` [PATCH v2 9/9] i5700: add interop test for protocol transition Brandon Williams
2017-10-03 20:14   ` [PATCH v3 00/10] " Brandon Williams
2017-10-03 20:14     ` [PATCH v3 01/10] connect: in ref advertisement, shallows are last Brandon Williams
2017-10-10 18:14       ` Jonathan Tan
2017-10-03 20:14     ` [PATCH v3 02/10] pkt-line: add packet_write function Brandon Williams
2017-10-10 18:15       ` Jonathan Tan
2017-10-03 20:15     ` [PATCH v3 03/10] protocol: introduce protocol extention mechanisms Brandon Williams
2017-10-06  9:09       ` Simon Ruderich
2017-10-06  9:40         ` Junio C Hamano
2017-10-06 11:11           ` Martin Ågren
2017-10-06 12:09             ` Junio C Hamano
2017-10-06 19:42               ` Martin Ågren
2017-10-06 20:27                 ` Stefan Beller
2017-10-08 14:24                   ` Martin Ågren
2017-10-10 21:00             ` Brandon Williams
2017-10-10 21:17               ` Jonathan Nieder
2017-10-10 21:32                 ` Stefan Beller
2017-10-11  0:39                 ` Junio C Hamano
2017-10-13 22:46                 ` Brandon Williams
2017-10-09  4:05           ` Martin Ågren
2017-10-10 19:51       ` Jonathan Tan
2017-10-03 20:15     ` [PATCH v3 04/10] daemon: recognize hidden request arguments Brandon Williams
2017-10-10 18:24       ` Jonathan Tan
2017-10-13 22:04         ` Brandon Williams
2017-10-03 20:15     ` [PATCH v3 05/10] upload-pack, receive-pack: introduce protocol version 1 Brandon Williams
2017-10-10 18:28       ` Jonathan Tan
2017-10-13 22:18         ` Brandon Williams
2017-10-03 20:15     ` [PATCH v3 06/10] connect: teach client to recognize v1 server response Brandon Williams
2017-10-03 20:15     ` [PATCH v3 07/10] connect: tell server that the client understands v1 Brandon Williams
2017-10-10 18:30       ` Jonathan Tan
2017-10-13 22:56         ` Brandon Williams
2017-10-03 20:15     ` [PATCH v3 08/10] http: " Brandon Williams
2017-10-03 20:15     ` [PATCH v3 09/10] i5700: add interop test for protocol transition Brandon Williams
2017-10-03 20:15     ` [PATCH v3 10/10] ssh: introduce a 'simple' ssh variant Brandon Williams
2017-10-03 21:42       ` Jonathan Nieder
2017-10-16 17:18         ` Brandon Williams
2017-10-23 21:28           ` [PATCH 0/5] Coping with unrecognized ssh wrapper scripts in GIT_SSH Jonathan Nieder
2017-10-23 21:29             ` [PATCH 1/5] connect: split git:// setup into a separate function Jonathan Nieder
2017-10-23 22:16               ` Stefan Beller [this message]
2017-10-24  0:09                 ` [WIP PATCH] diff: add option to ignore whitespaces for move detection only Stefan Beller
2017-10-24 18:48                   ` Brandon Williams
2017-10-25  1:25                     ` Junio C Hamano
2017-10-25  1:26                       ` Junio C Hamano
2017-10-25 18:58                         ` Brandon Williams
2017-10-24  1:54                 ` [PATCH 1/5] connect: split git:// setup into a separate function Junio C Hamano
2017-10-24  2:52                   ` Stefan Beller
2017-10-23 21:30             ` [PATCH 2/5] connect: split ssh command line options into " Jonathan Nieder
2017-10-23 21:48               ` Stefan Beller
2017-10-23 21:31             ` [PATCH 3/5] ssh: 'auto' variant to select between 'ssh' and 'simple' Jonathan Nieder
2017-10-23 22:19               ` Jonathan Tan
2017-10-23 22:43                 ` Jonathan Nieder
2017-10-23 22:51                   ` Brandon Williams
2017-10-23 22:57                     ` Jonathan Tan
2017-10-23 23:16                       ` [PATCH v2 0/5] Coping with unrecognized ssh wrapper scripts in GIT_SSH Jonathan Nieder
2017-10-23 23:17                         ` [PATCH 1/5] connect: split git:// setup into a separate function Jonathan Nieder
2017-10-24  1:44                           ` Junio C Hamano
2017-11-15 20:25                             ` Jonathan Nieder
2017-11-17  1:12                               ` Junio C Hamano
2017-10-23 23:17                         ` [PATCH 2/5] connect: split ssh command line options into " Jonathan Nieder
2017-10-24  2:01                           ` Junio C Hamano
2017-10-23 23:18                         ` [PATCH 3/5] ssh: 'auto' variant to select between 'ssh' and 'simple' Jonathan Nieder
2017-10-23 23:27                           ` Brandon Williams
2017-10-23 23:33                             ` Stefan Beller
2017-10-23 23:19                         ` [PATCH 4/5] ssh: 'simple' variant does not support -4/-6 Jonathan Nieder
2017-10-23 23:19                         ` [PATCH 5/5] ssh: 'simple' variant does not support --port Jonathan Nieder
2017-10-24  2:22                         ` [PATCH v2 0/5] Coping with unrecognized ssh wrapper scripts in GIT_SSH Junio C Hamano
2017-10-23 23:12                     ` [PATCH 3/5] ssh: 'auto' variant to select between 'ssh' and 'simple' Jonathan Nieder
2017-10-23 22:33               ` Stefan Beller
2017-10-23 22:54                 ` Jonathan Nieder
2017-10-24  2:16               ` Junio C Hamano
2017-10-25 12:51               ` Johannes Schindelin
2017-10-25 16:18                 ` Stefan Beller
2017-10-25 16:32                   ` Jonathan Nieder
2017-10-30  0:40                     ` Junio C Hamano
2017-10-30 12:37                       ` Johannes Schindelin
2017-10-23 21:32             ` [PATCH 4/5] ssh: 'simple' variant does not support -4/-6 Jonathan Nieder
2017-10-23 21:33             ` [PATCH 5/5] ssh: 'simple' variant does not support --port Jonathan Nieder
2017-10-23 22:37               ` Stefan Beller
2017-10-04  6:20     ` [PATCH v3 00/10] protocol transition Junio C Hamano
2017-10-10 19:39     ` [PATCH] Documentation: document Extra Parameters Jonathan Tan
2017-10-13 22:26       ` Brandon Williams
2017-10-16 17:55     ` [PATCH v4 00/11] protocol transition Brandon Williams
2017-10-16 17:55       ` [PATCH v4 01/11] connect: in ref advertisement, shallows are last Brandon Williams
2017-10-16 17:55       ` [PATCH v4 02/11] pkt-line: add packet_write function Brandon Williams
2017-10-16 17:55       ` [PATCH v4 03/11] protocol: introduce protocol extension mechanisms Brandon Williams
2017-10-16 21:25         ` Kevin Daudt
2017-10-16 17:55       ` [PATCH v4 04/11] daemon: recognize hidden request arguments Brandon Williams
2017-10-16 17:55       ` [PATCH v4 05/11] upload-pack, receive-pack: introduce protocol version 1 Brandon Williams
2017-10-16 17:55       ` [PATCH v4 06/11] connect: teach client to recognize v1 server response Brandon Williams
2017-10-16 17:55       ` [PATCH v4 07/11] connect: tell server that the client understands v1 Brandon Williams
2017-10-16 17:55       ` [PATCH v4 08/11] http: " Brandon Williams
2017-10-16 17:55       ` [PATCH v4 09/11] i5700: add interop test for protocol transition Brandon Williams
2017-10-16 17:55       ` [PATCH v4 10/11] ssh: introduce a 'simple' ssh variant Brandon Williams
2017-10-16 17:55       ` [PATCH v4 11/11] Documentation: document Extra Parameters Brandon Williams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAGZ79kYwARXNWRS4AgwTP7peZiWiwCBvWFiEr9TbpbWjgysfZA@mail.gmail.com \
    --to=sbeller@google.com \
    --cc=bmwill@google.com \
    --cc=bturner@atlassian.com \
    --cc=git@jeffhostetler.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jonathantanmy@google.com \
    --cc=jrnieder@gmail.com \
    --cc=peff@peff.net \
    --cc=wyan@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.