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);