Есть ли способ заставить команду go
использовать HTTP вместо HTTPS?
Я пытаюсь переместить проект в Go Modules, но этот проект включает в себя частный репозиторий git
в качествезависимость.Этот git
репозиторий размещен в частной локальной сети за брандмауэром, и я обычно клонирую его с чем-то вроде cd $GOPATH/git.ourdomain.net/foo/bar/ && git clone http://my-user:my-password@git.ourdomain.net/foo/bar/reponame.git
.
Однако теперь команды go mod
, go get
и go test
пытаютсяиспользовать HTTP с SSL (HTTPS).
Этот параметр не помогает:
git config \
--global \
url."http://my-user:my-password@git.ourdomain.net/foo/bar/reponame".insteadOf \
"http://git.ourdomain.net"
(проверьте здесь контекст для git
настроек для частных репозиториев: https://medium.com/cloud-native-the-gathering/go-modules-with-private-git-repositories-dfe795068db4)
Я изменил файл go.mod
, добавив ссылку на этот закрытый репозиторий (используя шаблон, подобный git.ourdomain.net/foo/bar/reponame@v0.0.0-<YYYYMMDDHHmmSS>-<GIT_COMMIT_ID>
), но при вызове go test
с файлом go.mod
, включающим этот закрытый репозиторий, я вижу:
go: git.ourdomain.net/foo/bar/reponame@v0.0.0-<YYYYMMDDHHmmSS>-<GIT_COMMIT_ID>: unrecognized import path "git.ourdomain.net/foo/bar/reponame" (https fetch: Get https://git.ourdomain.net/foo/bar/reponame?go-get=1: dial tcp <PUBLIC_IP_ADDRESS>:443: connect: connection refused)
Я также попытался вернуть go.mod
к исходной версии (без этого частного хранилища) и попытался go get
по пути, где хранится файл go.mod
, предполагая, чтокаким-то образом обновит файл go.mod
через HTTP из-за -insecure
(отметьте здесь https://golang.org/cmd/go/#hdr-Module_aware_go_get), следующим образом:
GO111MODULE=on go get -insecure -u git.ourdomain.net/foo/bar/reponame
Но это выдало сообщение об ошибке:
fatal: remote error: Repository not found
The requested repository does not exist, or you do not have permission to
access it.
Я знаю, что должен использовать SSL, но я никогда не управлял этим git
сервер, чтобы настроить его так, как он должен быть настроен.Поэтому я просто использовал git clone
, предоставляющий URL-адрес HTTP (за брандмауэром), и он всегда работал.