Есть ли способ заставить команду go
использовать HTTP вместо HTTPS?
Я пытаюсь переместить проект в Go Modules, но этот проект включает частный репозиторий git
в качестве зависимости. Этот git
репозиторий размещен в частной локальной сети за брандмауэром, и я обычно клонирую его с помощью чего-то вроде cd $GOPATH/git.ourdomain.net/foo/bar/ && git clone http://my-user:[email protected]/foo/bar/reponame.git
.
Однако теперь команды go mod
, go get
и go test
пытаются использовать HTTP с SSL (HTTPS).
Этот параметр не помогает:
git config \
--global \
url."http://my-user:[email protected]/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/[email protected]<YYYYMMDDHHmmSS>-<GIT_COMMIT_ID>
), но при вызове go test
с файлом go.mod
, включая это частное репозиторий, я вижу:
go: git.ourdomain.net/foo/bar/[email protected]<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 (находясь за брандмауэром), и это всегда работало.