From 70ad9e61c1d7fe30f321d5dd1cb2a19dd20aebb4 Mon Sep 17 00:00:00 2001
From: Flo Everett <73506550+flo-everett-xero@users.noreply.github.com>
Date: Tue, 1 Nov 2022 17:37:21 -0400
Subject: [PATCH] fix(git): git http url fix (#18705)

---
 lib/util/git/url.spec.ts | 6 ++++++
 lib/util/git/url.ts      | 9 +++++----
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/lib/util/git/url.spec.ts b/lib/util/git/url.spec.ts
index cc05cc63e2..ca32e45f8a 100644
--- a/lib/util/git/url.spec.ts
+++ b/lib/util/git/url.spec.ts
@@ -58,6 +58,9 @@ describe('util/git/url', () => {
       expect(
         getHttpUrl('http://gitlab.com:8443/', 'gitlab-ci-token:token')
       ).toBe('http://gitlab-ci-token:token@gitlab.com:8443/');
+      expect(getHttpUrl('git@gitlab.com:some/repo', 'token')).toBe(
+        'https://gitlab-ci-token:token@gitlab.com/some/repo'
+      );
     });
 
     it('returns github url with token', () => {
@@ -70,6 +73,9 @@ describe('util/git/url', () => {
       expect(
         getHttpUrl('http://github.com:8443/', 'x-access-token:token')
       ).toBe('http://x-access-token:token@github.com:8443/');
+      expect(getHttpUrl('git@github.com:some/repo', 'token')).toBe(
+        'https://x-access-token:token@github.com/some/repo'
+      );
     });
   });
 
diff --git a/lib/util/git/url.ts b/lib/util/git/url.ts
index 7857f66bd9..75bf8c2a60 100644
--- a/lib/util/git/url.ts
+++ b/lib/util/git/url.ts
@@ -11,10 +11,14 @@ export function parseGitUrl(url: string): gitUrlParse.GitUrl {
 export function getHttpUrl(url: string, token?: string): string {
   const parsedUrl = parseGitUrl(url);
 
+  const protocol = regEx(/^https?$/).exec(parsedUrl.protocol)
+    ? parsedUrl.protocol
+    : 'https';
+
   parsedUrl.token = token ?? '';
 
   if (token) {
-    switch (detectPlatform(url)) {
+    switch (detectPlatform(parsedUrl.toString(protocol))) {
       case 'gitlab':
         parsedUrl.token = token.includes(':')
           ? token
@@ -28,9 +32,6 @@ export function getHttpUrl(url: string, token?: string): string {
     }
   }
 
-  const protocol = regEx(/^https?$/).exec(parsedUrl.protocol)
-    ? parsedUrl.protocol
-    : 'https';
   return parsedUrl.toString(protocol);
 }
 
-- 
GitLab