I like to use the glab
command-line tool, which used to be a third-party project but which has apparently now been adopted by GitLab themselves. In particular, the glab mr
family of commands to interact with merge requests are invaluable for checking out branches from contributors’ forks.
Since October 2022, GNOME’s GitLab instance now has a somewhat unusual configuration where the SSH hostname (ssh.gitlab.gnome.org
) is different to the web/API hostname (gitlab.gnome.org
). To make old checkouts continue to work, I have the following configuration in my ~/.ssh/config
:
Host gitlab.gnome.org Hostname ssh.gitlab.gnome.org
But whether you set the SSH hostname in this way, or use the new hostname in Git remote URLs, glab
will complain:
none of the git remotes configured for this repository points to a known GitLab host. Please use `glab auth login` to authenticate and configure a new host for glab
To get this to work, set the GitLab hostname to ssh.gitlab.gnome.org
and the API hostname to gitlab.gnome.org
. In ~/.config/glab-cli/config.yml
, this looks like this:
hosts: ssh.gitlab.gnome.org: token: redacted api_host: gitlab.gnome.org git_protocol: ssh api_protocol: https
With this configuration, glab auth status
shows incorrect API URLs, but the tool actually works:
$ glab auth status ssh.gitlab.gnome.org ✓ Logged in to ssh.gitlab.gnome.org as wjt (/home/wjt/.config/glab-cli/config.yml) ✓ Git operations for ssh.gitlab.gnome.org configured to use ssh protocol. ✓ API calls for ssh.gitlab.gnome.org are made over https protocol ✓ REST API Endpoint: https://ssh.gitlab.gnome.org/api/v4/ ✓ GraphQL Endpoint: https://ssh.gitlab.gnome.org/api/graphql/
I’m posting this because I spent a while trying to find a way to override the SSH hostname, before finding this issue which explains that you do it the other way around, by overriding the API hostname.