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, использованного для подписи сертификата сервера.