From 21f024680c7abe2ead41326ce1bffa851fa346dd Mon Sep 17 00:00:00 2001 From: luke2x <97411838+luke2x@users.noreply.github.com> Date: Fri, 6 Nov 2026 20:16:00 +0000 Subject: [PATCH] fix(shared): keep Windows clone paths out of SSH protocol rewrites --- packages/shared/src/cloneUrl.test.ts | 9 +++++++++ packages/shared/src/cloneUrl.ts | 1 + 2 files changed, 10 insertions(+) diff --git a/packages/shared/src/cloneUrl.test.ts b/packages/shared/src/cloneUrl.test.ts index fc029e1b3b238..fca027e532f4a 100644 --- a/packages/shared/src/cloneUrl.test.ts +++ b/packages/shared/src/cloneUrl.test.ts @@ -159,6 +159,15 @@ describe("cloneUrlForProtocol", () => { expect(cloneUrlForProtocol("[2001:db8::1]:/srv/repo.git", "https")).toBeNull(); expect(cloneUrlForProtocol("/srv/git/repo.git", "https")).toBeNull(); expect(cloneUrlProtocol("file:///srv/git/repo.git")).toBeNull(); + for (const path of [ + "C:\\repos\\project.git", + " C:\\repos\\project.git ", + "D:/repos/project.git", + ]) { + expect(cloneUrlProtocol(path)).toBeNull(); + expect(cloneUrlForProtocol(path, "ssh")).toBeNull(); + expect(cloneUrlForProtocol(path, "https")).toBeNull(); + } }); }); diff --git a/packages/shared/src/cloneUrl.ts b/packages/shared/src/cloneUrl.ts index 673a59918947d..5f91b269bd9e7 100644 --- a/packages/shared/src/cloneUrl.ts +++ b/packages/shared/src/cloneUrl.ts @@ -11,6 +11,7 @@ function parseCloneUrl( url: string, ): { protocol: CloneProtocol; host: string; path: string; customPort: boolean } | null { const trimmed = url.trim(); + if (isWindowsDrivePath(trimmed)) return null; const ssh = SSH_URL.exec(trimmed); if (ssh) return { protocol: "ssh", host: ssh[1]!, path: ssh[3]!, customPort: !!ssh[2] }; const https = HTTPS_URL.exec(trimmed);