go get: настройки Git игнорируются

Я пытаюсь получить хранилище с частного сервера gitlab, с Mac.

Я установил в git config (~/.gitconfig) использование ssh вместо https:

[url "git@gitlab.mysite.com:"]
    insteadOf = https://gitlab.mysite.com/

Когда я клонирую проект, используя URL-адрес https, я получаю правильную замену

$ git clone https://gitlab.mysite.com/group/project
$ cd project
$ git remote -v
origin  git@gitlab.mysite.com:group/project (fetch)
origin  git@gitlab.mysite.com:group/project (push)

Тем не менее, когда я использую Go Get, он пытается использовать URL-адрес https, и сбой

$ go get gitlab.mysite.com/group/project
package gitlab.mysite.com/group/project: unrecognized import path "gitlab.mysite.com/group/project" (https fetch: Get https://gitlab.mysite.com/group/project?go-get=1: x509: certificate signed by unknown authority)

Почему go get не использует мою конфигурацию git? Как я могу это исправить?

Я знаю, что проблема похожа на этот вопрос: go get: Git settings игнорируется и многие другие вопросы, касающиеся личных репозиториев

моя проблема в другом

1 ответ

Решение

Эта ошибка возникает до git clone вызов. Когда вы звоните go get, он делает HTTPS вызов URL-адреса, чтобы проверить заголовки и посмотреть, если он предоставляет go get перенаправления. Вот что терпит неудачу.

И это сбой, потому что сертификат, предоставленный сервером, не подписан центром сертификации, который вы указали в качестве доверенного в вашей локальной системе. Это может быть связано с тем, что ваш внутренний gitlab использует неподписанный сертификат, потому что центр сертификации, используемый для подписи, не был добавлен в вашу локальную систему, или потому, что ваше рабочее место использует прокси-сервер в стиле "человек посередине", и вы не ЦА этого прокси не добавлено. Вы можете попытаться исправить проблему с сертификатом или просто запустить:

go get -insecure gitlab.mysite.com/group/project

Флаг -insecure разрешает выборку из репозиториев и разрешение пользовательских доменов с использованием небезопасных схем, таких как HTTP. Используйте с осторожностью.

Примечательно, что это обходит проверку CA, использованного для подписи сертификата сервера.

Другие вопросы по тегам