threads / patch / 41399

patchDisown ssh+git and git+ssh

Subject: [PATCH] Disown ssh+git and git+ssh

## tl;dr

8 messages between Feb 12, 2016 and Mar 24, 2016. Diffs are folded; open one to read it.

replies: 7people: 4as markdown or json

Carlos Martín Nieto· Feb 12, 2016, 15:09 UTC · lore

These were silly from the beginning, but we have to support them for compatibility. That doesn't mean we have to show them in the documentation. These were already left out of the main list, but a reference in the main manpage was left, so remove that.

Also add a note to discourage their use if anybody goes looking for them
in the source code.
---
 Documentation/git.txt | 2 +-
 connect.c             | 4 ++++
 transport.c           | 4 ++++
 3 files changed, 9 insertions(+), 1 deletion(-)
Show changes to 3 files +9 −1

Documentation/git.txt, connect.c, transport.c

diff --git a/Documentation/git.txt b/Documentation/git.txt
index d987ad2..2f90635 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -1122,7 +1122,7 @@ of clones and fetches.
 	    connection (or proxy, if configured)
 
 	  - `ssh`: git over ssh (including `host:path` syntax,
-	    `git+ssh://`, etc).
+	    `ssh://`, etc).
 
 	  - `rsync`: git over rsync
 
diff --git a/connect.c b/connect.c
index fd7ffe1..4f96424 100644
--- a/connect.c
+++ b/connect.c
@@ -267,6 +267,10 @@ static enum protocol get_protocol(const char *name)
 		return PROTO_SSH;
 	if (!strcmp(name, "git"))
 		return PROTO_GIT;
+	/*
+	 * These ssh schemes remain supported for compat but are
+	 * undocumented and their use is discouraged
+	 */
 	if (!strcmp(name, "git+ssh"))
 		return PROTO_SSH;
 	if (!strcmp(name, "ssh+git"))
diff --git a/transport.c b/transport.c
index 9ae7184..f5ae707 100644
--- a/transport.c
+++ b/transport.c
@@ -1002,6 +1002,10 @@ struct transport *transport_get(struct remote *remote, const char *url)
 		|| starts_with(url, "file://")
 		|| starts_with(url, "git://")
 		|| starts_with(url, "ssh://")
+		/*
+		 * These ssh schemes remain supported for compat but are
+		 * undocumented and their use is discouraged
+		 */
 		|| starts_with(url, "git+ssh://")
 		|| starts_with(url, "ssh+git://")) {
 		/*
-- 
2.7.0
Jeff King· Feb 12, 2016, 18:40 UTC · re: Carlos Martín Nieto · lore

Re: [PATCH] Disown ssh+git and git+ssh

On Fri, Feb 12, 2016 at 04:09:37PM +0100, Carlos Martín Nieto wrote:
> These were silly from the beginning, but we have to support them for
> compatibility. That doesn't mean we have to show them in the
> documentation. These were already left out of the main list, but a
> reference in the main manpage was left, so remove that.

Yeah, that reference was added by me to try to be thorough, but I think mentioning ssh:// (as you do here) accomplishes the same goal in a better way.

> Also add a note to discourage their use if anybody goes looking for them
> in the source code.
Sounds like a good plan.
Show 15 quoted lines
> diff --git a/transport.c b/transport.c
> index 9ae7184..f5ae707 100644
> --- a/transport.c
> +++ b/transport.c
> @@ -1002,6 +1002,10 @@ struct transport *transport_get(struct remote *remote, const char *url)
>  		|| starts_with(url, "file://")
>  		|| starts_with(url, "git://")
>  		|| starts_with(url, "ssh://")
> +		/*
> +		 * These ssh schemes remain supported for compat but are
> +		 * undocumented and their use is discouraged
> +		 */
>  		|| starts_with(url, "git+ssh://")
>  		|| starts_with(url, "ssh+git://")) {
>  		/*

Breaking apart an ||-chain with a comment like this is a little odd, but I think the result is reasonably readable, so it's probably OK.

The rest of the patch is obviously correct. Thanks for following up on the earlier discussion.

-Peff
Junio C Hamano· Feb 13, 2016, 21:10 UTC · re: Carlos Martín Nieto · lore

Re: [PATCH] Disown ssh+git and git+ssh

Carlos Martín Nieto <cmn@dwim.me> writes:
Show 8 quoted lines
> These were silly from the beginning, but we have to support them for
> compatibility. That doesn't mean we have to show them in the
> documentation. These were already left out of the main list, but a
> reference in the main manpage was left, so remove that.
>
> Also add a note to discourage their use if anybody goes looking for them
> in the source code.
> ---
Sign off?
Show 30 quoted lines
>  Documentation/git.txt | 2 +-
>  connect.c             | 4 ++++
>  transport.c           | 4 ++++
>  3 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/git.txt b/Documentation/git.txt
> index d987ad2..2f90635 100644
> --- a/Documentation/git.txt
> +++ b/Documentation/git.txt
> @@ -1122,7 +1122,7 @@ of clones and fetches.
>  	    connection (or proxy, if configured)
>  
>  	  - `ssh`: git over ssh (including `host:path` syntax,
> -	    `git+ssh://`, etc).
> +	    `ssh://`, etc).
>  
>  	  - `rsync`: git over rsync
>  
> diff --git a/connect.c b/connect.c
> index fd7ffe1..4f96424 100644
> --- a/connect.c
> +++ b/connect.c
> @@ -267,6 +267,10 @@ static enum protocol get_protocol(const char *name)
>  		return PROTO_SSH;
>  	if (!strcmp(name, "git"))
>  		return PROTO_GIT;
> +	/*
> +	 * These ssh schemes remain supported for compat but are
> +	 * undocumented and their use is discouraged
> +	 */
Micronit.

It is not like we continue to support two more different protocols; we just allow users to spell the thing in different ways.

"These ssh schemes" might be clearer if spelled "These alternative ways to spell the ssh scheme".

Show 7 quoted lines
>  		|| starts_with(url, "file://")
>  		|| starts_with(url, "git://")
>  		|| starts_with(url, "ssh://")
> +		/*
> +		 * These ssh schemes remain supported for compat but are
> +		 * undocumented and their use is discouraged
> +		 */
Likewise.
>  		|| starts_with(url, "git+ssh://")
>  		|| starts_with(url, "ssh+git://")) {
>  		/*
Thanks.
Carlos Martín Nieto· Feb 15, 2016, 14:29 UTC · re: Junio C Hamano · lore

These were silly from the beginning, but we have to support them for compatibility. That doesn't mean we have to show them in the documentation. These were already left out of the main list, but a reference in the main manpage was left, so remove that.

Also add a note to discourage their use if anybody goes looking for them in the source code.

Signed-off-by: Carlos Martín Nieto <cmn@dwim.me>
---

I've updated the wording, so we talk about different ways of spelling ssh rather than talking about schemes.

 Documentation/git.txt | 2 +-
 connect.c             | 4 ++++
 transport.c           | 4 ++++
 3 files changed, 9 insertions(+), 1 deletion(-)
Show changes to 3 files +9 −1

Documentation/git.txt, connect.c, transport.c

diff --git a/Documentation/git.txt b/Documentation/git.txt
index d987ad2..2f90635 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -1122,7 +1122,7 @@ of clones and fetches.
 	    connection (or proxy, if configured)
 
 	  - `ssh`: git over ssh (including `host:path` syntax,
-	    `git+ssh://`, etc).
+	    `ssh://`, etc).
 
 	  - `rsync`: git over rsync
 
diff --git a/connect.c b/connect.c
index fd7ffe1..d3eaa0e 100644
--- a/connect.c
+++ b/connect.c
@@ -267,6 +267,10 @@ static enum protocol get_protocol(const char *name)
 		return PROTO_SSH;
 	if (!strcmp(name, "git"))
 		return PROTO_GIT;
+	/*
+	 * These ways to spell the ssh transport remain supported for
+	 * compat but are undocumented and their use is discouraged
+	 */
 	if (!strcmp(name, "git+ssh"))
 		return PROTO_SSH;
 	if (!strcmp(name, "ssh+git"))
diff --git a/transport.c b/transport.c
index 9ae7184..ed61e72 100644
--- a/transport.c
+++ b/transport.c
@@ -1002,6 +1002,10 @@ struct transport *transport_get(struct remote *remote, const char *url)
 		|| starts_with(url, "file://")
 		|| starts_with(url, "git://")
 		|| starts_with(url, "ssh://")
+		/*
+		 * These ways to spell the ssh transport remain supported for
+		 * compat but are undocumented and their use is discouraged
+		 */
 		|| starts_with(url, "git+ssh://")
 		|| starts_with(url, "ssh+git://")) {
 		/*
-- 
2.7.0
Eric Sunshine· Feb 15, 2016, 18:16 UTC · re: Carlos Martín Nieto · lore

Re: [PATCH] Disown ssh+git and git+ssh

On Mon, Feb 15, 2016 at 9:29 AM, Carlos Martín Nieto <cmn@dwim.me> wrote:
> These were silly from the beginning, but we have to support them for

It might be helpful to cite some reference to support the claim that they are "silly" since it's not necessarily obvious to readers who did not following the discussion.

More below...
Show 28 quoted lines
> compatibility. That doesn't mean we have to show them in the
> documentation. These were already left out of the main list, but a
> reference in the main manpage was left, so remove that.
>
> Also add a note to discourage their use if anybody goes looking for them
> in the source code.
>
> Signed-off-by: Carlos Martín Nieto <cmn@dwim.me>
> ---
>         if (!strcmp(name, "git"))
>                 return PROTO_GIT;
> +       /*
> +        * These ways to spell the ssh transport remain supported for
> +        * compat but are undocumented and their use is discouraged
> +        */
>         if (!strcmp(name, "git+ssh"))
>                 return PROTO_SSH;
>         if (!strcmp(name, "ssh+git"))
> @@ -1002,6 +1002,10 @@ struct transport *transport_get(struct remote *remote, const char *url)
>                 || starts_with(url, "file://")
>                 || starts_with(url, "git://")
>                 || starts_with(url, "ssh://")
> +               /*
> +                * These ways to spell the ssh transport remain supported for
> +                * compat but are undocumented and their use is discouraged
> +                */
>                 || starts_with(url, "git+ssh://")
>                 || starts_with(url, "ssh+git://")) {

A little "comment" bikeshedding: Aside from undesirably interrupting the code flow, these large comment blocks draw far too much attention from the reader than these deprecated spellings of "ssh" deserve, thus making them seem overly important. How about minimizing their importance by giving them minimal commentary?

    || starts_with(url, "ssh://")
    || starts_with(url, "git+ssh://") /* deprecated */
    || starts_with(url, "ssh+git://") { /* deprecated */

The term "deprecated" should be sufficient to explain that their use is discouraged and why they are not documented anymore, and if a reader wants to know more, the commit message can be consulted for the full story.

Junio C Hamano· Mar 9, 2016, 21:56 UTC · re: Eric Sunshine · lore

Re: [PATCH] Disown ssh+git and git+ssh

Eric Sunshine <sunshine@sunshineco.com> writes:
Show 16 quoted lines
> It might be helpful to cite some reference to support the claim that
> they are "silly" since it's not necessarily obvious to readers who did
> not following the discussion.
> ...
>>                 || starts_with(url, "ssh://")
>> +               /*
>> +                * These ways to spell the ssh transport remain supported for
>> +                * compat but are undocumented and their use is discouraged
>> +                */
>>                 || starts_with(url, "git+ssh://")
>>                 || starts_with(url, "ssh+git://")) {
>
> A little "comment" bikeshedding: Aside from undesirably interrupting
> the code flow, these large comment blocks draw far too much attention
> from the reader than these deprecated spellings of "ssh" deserve, thus
> making them seem overly important.

I've been waiting for an update for it but got tired of it. Instead of discarding the topic, let's amend it like so:

-- >8 --
From: Carlos Martín Nieto <cmn@dwim.me>
Date: Mon, 15 Feb 2016 15:29:06 +0100
Subject: [PATCH] Disown ssh+git and git+ssh

Some people argue that these were silly from the beginning (see http://thread.gmane.org/gmane.comp.version-control.git/285590/focus=285601 for example), but we have to support them for compatibility.

That doesn't mean we have to show them in the documentation. These were already left out of the main list, but a reference in the main manpage was left, so remove that.

Also add a note to discourage their use if anybody goes looking for them in the source code.

Signed-off-by: Carlos Martín Nieto <cmn@dwim.me>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 Documentation/git.txt | 2 +-
 connect.c             | 4 ++--
 transport.c           | 5 +++--
 3 files changed, 6 insertions(+), 5 deletions(-)
Show changes to 3 files +6 −5

Documentation/git.txt, connect.c, transport.c

diff --git a/Documentation/git.txt b/Documentation/git.txt
index d987ad2..2f90635 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -1122,7 +1122,7 @@ of clones and fetches.
 	    connection (or proxy, if configured)
 
 	  - `ssh`: git over ssh (including `host:path` syntax,
-	    `git+ssh://`, etc).
+	    `ssh://`, etc).
 
 	  - `rsync`: git over rsync
 
diff --git a/connect.c b/connect.c
index fd7ffe1..3babb81 100644
--- a/connect.c
+++ b/connect.c
@@ -267,9 +267,9 @@ static enum protocol get_protocol(const char *name)
 		return PROTO_SSH;
 	if (!strcmp(name, "git"))
 		return PROTO_GIT;
-	if (!strcmp(name, "git+ssh"))
+	if (!strcmp(name, "git+ssh")) /* deprecated - do not use */
 		return PROTO_SSH;
-	if (!strcmp(name, "ssh+git"))
+	if (!strcmp(name, "ssh+git")) /* deprecated - do not use */
 		return PROTO_SSH;
 	if (!strcmp(name, "file"))
 		return PROTO_FILE;
diff --git a/transport.c b/transport.c
index 67f3666..908e08b 100644
--- a/transport.c
+++ b/transport.c
@@ -1001,8 +1001,9 @@ struct transport *transport_get(struct remote *remote, const char *url)
 		|| starts_with(url, "file://")
 		|| starts_with(url, "git://")
 		|| starts_with(url, "ssh://")
-		|| starts_with(url, "git+ssh://")
-		|| starts_with(url, "ssh+git://")) {
+		|| starts_with(url, "git+ssh://") /* deprecated - do not use */
+		|| starts_with(url, "ssh+git://") /* deprecated - do not use */
+		) {
 		/*
 		 * These are builtin smart transports; "allowed" transports
 		 * will be checked individually in git_connect.
-- 
2.8.0-rc1-142-g215006a
Eric Sunshine· Mar 10, 2016, 20:51 UTC · re: Junio C Hamano · lore

Re: [PATCH] Disown ssh+git and git+ssh

On Wed, Mar 9, 2016 at 4:56 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 20 quoted lines
> Eric Sunshine <sunshine@sunshineco.com> writes:
>> It might be helpful to cite some reference to support the claim that
>> they are "silly" since it's not necessarily obvious to readers who did
>> not following the discussion.
>> ...
>>>                 || starts_with(url, "ssh://")
>>> +               /*
>>> +                * These ways to spell the ssh transport remain supported for
>>> +                * compat but are undocumented and their use is discouraged
>>> +                */
>>>                 || starts_with(url, "git+ssh://")
>>>                 || starts_with(url, "ssh+git://")) {
>>
>> A little "comment" bikeshedding: Aside from undesirably interrupting
>> the code flow, these large comment blocks draw far too much attention
>> from the reader than these deprecated spellings of "ssh" deserve, thus
>> making them seem overly important.
>
> I've been waiting for an update for it but got tired of it.
> Instead of discarding the topic, let's amend it like so:
Minor redundancy[1] aside, this looks good to me. Thanks.
[1]: "do not use" is already implied by "deprecated"
Show 66 quoted lines
> -- >8 --
> From: Carlos Martín Nieto <cmn@dwim.me>
> Date: Mon, 15 Feb 2016 15:29:06 +0100
> Subject: [PATCH] Disown ssh+git and git+ssh
>
> Some people argue that these were silly from the beginning (see
> http://thread.gmane.org/gmane.comp.version-control.git/285590/focus=285601
> for example), but we have to support them for compatibility.
>
> That doesn't mean we have to show them in the documentation.  These
> were already left out of the main list, but a reference in the main
> manpage was left, so remove that.
>
> Also add a note to discourage their use if anybody goes looking for them
> in the source code.
>
> Signed-off-by: Carlos Martín Nieto <cmn@dwim.me>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
> diff --git a/Documentation/git.txt b/Documentation/git.txt
> index d987ad2..2f90635 100644
> --- a/Documentation/git.txt
> +++ b/Documentation/git.txt
> @@ -1122,7 +1122,7 @@ of clones and fetches.
>             connection (or proxy, if configured)
>
>           - `ssh`: git over ssh (including `host:path` syntax,
> -           `git+ssh://`, etc).
> +           `ssh://`, etc).
>
>           - `rsync`: git over rsync
>
> diff --git a/connect.c b/connect.c
> index fd7ffe1..3babb81 100644
> --- a/connect.c
> +++ b/connect.c
> @@ -267,9 +267,9 @@ static enum protocol get_protocol(const char *name)
>                 return PROTO_SSH;
>         if (!strcmp(name, "git"))
>                 return PROTO_GIT;
> -       if (!strcmp(name, "git+ssh"))
> +       if (!strcmp(name, "git+ssh")) /* deprecated - do not use */
>                 return PROTO_SSH;
> -       if (!strcmp(name, "ssh+git"))
> +       if (!strcmp(name, "ssh+git")) /* deprecated - do not use */
>                 return PROTO_SSH;
>         if (!strcmp(name, "file"))
>                 return PROTO_FILE;
> diff --git a/transport.c b/transport.c
> index 67f3666..908e08b 100644
> --- a/transport.c
> +++ b/transport.c
> @@ -1001,8 +1001,9 @@ struct transport *transport_get(struct remote *remote, const char *url)
>                 || starts_with(url, "file://")
>                 || starts_with(url, "git://")
>                 || starts_with(url, "ssh://")
> -               || starts_with(url, "git+ssh://")
> -               || starts_with(url, "ssh+git://")) {
> +               || starts_with(url, "git+ssh://") /* deprecated - do not use */
> +               || starts_with(url, "ssh+git://") /* deprecated - do not use */
> +               ) {
>                 /*
>                  * These are builtin smart transports; "allowed" transports
>                  * will be checked individually in git_connect.
> --
> 2.8.0-rc1-142-g215006a
Carlos Martín Nieto· Mar 24, 2016, 16:56 UTC · re: Junio C Hamano · lore

Re: [PATCH] Disown ssh+git and git+ssh

On Wed, 2016-03-09 at 13:56 -0800, Junio C Hamano wrote:
Show 28 quoted lines
> Eric Sunshine <sunshine@sunshineco.com> writes:
> 
> > 
> > It might be helpful to cite some reference to support the claim
> > that
> > they are "silly" since it's not necessarily obvious to readers who
> > did
> > not following the discussion.
> > ...
> > > 
> > >                 || starts_with(url, "ssh://")
> > > +               /*
> > > +                * These ways to spell the ssh transport remain
> > > supported for
> > > +                * compat but are undocumented and their use is
> > > discouraged
> > > +                */
> > >                 || starts_with(url, "git+ssh://")
> > >                 || starts_with(url, "ssh+git://")) {
> > A little "comment" bikeshedding: Aside from undesirably
> > interrupting
> > the code flow, these large comment blocks draw far too much
> > attention
> > from the reader than these deprecated spellings of "ssh" deserve,
> > thus
> > making them seem overly important.
> I've been waiting for an update for it but got tired of it.
> Instead of discarding the topic, let's amend it like so:

Sorry, I missed the call for the rewording. The below looks good to me. Thanks.

Show 77 quoted lines
> 
> -- >8 --
> From: Carlos Martín Nieto <cmn@dwim.me>
> Date: Mon, 15 Feb 2016 15:29:06 +0100
> Subject: [PATCH] Disown ssh+git and git+ssh
> 
> Some people argue that these were silly from the beginning (see
> http://thread.gmane.org/gmane.comp.version-control.git/285590/focus=2
> 85601
> for example), but we have to support them for compatibility.
> 
> That doesn't mean we have to show them in the documentation.  These
> were already left out of the main list, but a reference in the main
> manpage was left, so remove that.
> 
> Also add a note to discourage their use if anybody goes looking for
> them
> in the source code.
> 
> Signed-off-by: Carlos Martín Nieto <cmn@dwim.me>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
>  Documentation/git.txt | 2 +-
>  connect.c             | 4 ++--
>  transport.c           | 5 +++--
>  3 files changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/Documentation/git.txt b/Documentation/git.txt
> index d987ad2..2f90635 100644
> --- a/Documentation/git.txt
> +++ b/Documentation/git.txt
> @@ -1122,7 +1122,7 @@ of clones and fetches.
>  	    connection (or proxy, if configured)
>  
>  	  - `ssh`: git over ssh (including `host:path` syntax,
> -	    `git+ssh://`, etc).
> +	    `ssh://`, etc).
>  
>  	  - `rsync`: git over rsync
>  
> diff --git a/connect.c b/connect.c
> index fd7ffe1..3babb81 100644
> --- a/connect.c
> +++ b/connect.c
> @@ -267,9 +267,9 @@ static enum protocol get_protocol(const char
> *name)
>  		return PROTO_SSH;
>  	if (!strcmp(name, "git"))
>  		return PROTO_GIT;
> -	if (!strcmp(name, "git+ssh"))
> +	if (!strcmp(name, "git+ssh")) /* deprecated - do not use */
>  		return PROTO_SSH;
> -	if (!strcmp(name, "ssh+git"))
> +	if (!strcmp(name, "ssh+git")) /* deprecated - do not use */
>  		return PROTO_SSH;
>  	if (!strcmp(name, "file"))
>  		return PROTO_FILE;
> diff --git a/transport.c b/transport.c
> index 67f3666..908e08b 100644
> --- a/transport.c
> +++ b/transport.c
> @@ -1001,8 +1001,9 @@ struct transport *transport_get(struct remote
> *remote, const char *url)
>  		|| starts_with(url, "file://")
>  		|| starts_with(url, "git://")
>  		|| starts_with(url, "ssh://")
> -		|| starts_with(url, "git+ssh://")
> -		|| starts_with(url, "ssh+git://")) {
> +		|| starts_with(url, "git+ssh://") /* deprecated - do
> not use */
> +		|| starts_with(url, "ssh+git://") /* deprecated - do
> not use */
> +		) {
>  		/*
>  		 * These are builtin smart transports; "allowed"
> transports
>  		 * will be checked individually in git_connect.

← back to recent threads