From c5318659ec13fbcfd3ef2400f5b0bd1bfee68286 Mon Sep 17 00:00:00 2001 From: Ladislau Szomoru <3372902+lszomoru@users.noreply.github.com> Date: Tue, 14 Jun 2022 20:41:54 +0200 Subject: [PATCH] Git - add support for SSH Uri (#152051) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add support for SSH Uri * Update extensions/git/src/protocolHandler.ts Co-authored-by: João Moreno Co-authored-by: João Moreno --- extensions/git/src/protocolHandler.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/extensions/git/src/protocolHandler.ts b/extensions/git/src/protocolHandler.ts index c0c3f2a6527..33decfe1846 100644 --- a/extensions/git/src/protocolHandler.ts +++ b/extensions/git/src/protocolHandler.ts @@ -38,7 +38,15 @@ export class GitProtocolHandler implements UriHandler { let cloneUri: Uri; try { - cloneUri = Uri.parse(Array.isArray(data.url) ? data.url[0] : data.url, true); + let rawUri = Array.isArray(data.url) ? data.url[0] : data.url; + + // Handle SSH Uri + // Ex: git@github.com:microsoft/vscode.git + rawUri = rawUri.replace(/^(git@[^\/:]+)(:)/i, 'ssh://$1/'); + + cloneUri = Uri.parse(rawUri, true); + + // Validate against supported schemes if (!schemes.has(cloneUri.scheme.toLowerCase())) { throw new Error('Unsupported scheme.'); }