microsoft / vscode-pull-request-github

GitHub Pull Requests for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github
MIT License
2.32k stars 583 forks source link

Plugin does not work with SSH aliases for SSH remotes #6228

Open sparekh-bbg opened 2 months ago

sparekh-bbg commented 2 months ago

Type: Bug

Background

Our instance of Github Enterprise is setup to require access via SSH. We also use an alias in ~/.ssh/config to make the git clone command shorter, something like:

Host gitsrv gitsrv.full.domain.com
    HostName gitsrv.full.domain.com
...

(names revised)

Steps (not working)

  1. Clone the repo using git clone gitsrv:MyOrg/cool_repo
  2. Open the folder in VS code and go to the PR tile
  3. The plugin is stuck at the "You have not yet signed in with GitHub" screen.
  4. The plugin logs has these messages:
    2024-09-15 19:45:10.790 [info] GitHubServer> Received fallback response from the server: dial tcp: lookup gitsrv on 10.10.10.10:53: no such host
    2024-09-15 19:45:10.790 [warning] GitHubServer> No response from host https://gitsrv/MyOrg/cool_repo: Unexpected token 'd', "dial tcp: "... is not valid JSON
    2024-09-15 19:45:10.790 [warning] No remotes found. The following remotes are missing: origin, upstream

The plugin however works fine if we use the full server name (git clone gitsrv.full.domain.com:MyOrg/cool_repo). BTW, also works with the git@ prepended to the hostname.

Hypothesis

The plugin attempts to convert the SSH hostname/alias directly into the HTTP URL to the server. Perhaps it could attempt to resolve it via the SSH config file first? For e.g., this (on Unix like systems at least) seems to get the right name:

ssh -G "$SERVER" | egrep "^hostname\s+"| awk '{print $2}'

Related

Issue #6095 is potentially related, but there aren't enough details there to tell.

Extension version: 0.96.0 VS Code version: Code 1.93.1 (38c31bc77e0dd6ae88a4e9cc93428cc27a56ba40, 2024-09-11T17:20:05.685Z) OS version: Darwin arm64 23.6.0 Modes: