Укажите идентификатор фиксации в частной зависимости с модулями Go, используя S SH и закрытый репозиторий, размещенный на GitLab.com с именем, не заканчивающимся на. git - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь go get из gitlab.com:

  • частного репозитория (который используется как Go import и не заканчивается .git в этих import путей)
  • в качестве зависимости в другом Go проекте (также частном)
  • с использованием Go модулей (Go версия 1.14.2 с использованием GOPRIVATE и S SH ключи, см. ниже)
  • и указание идентификатора фиксации (это в основном экспериментальная ветка, поэтому я не могу просто получить ветку master без указания идентификатора фиксации).

Однако я вижу это:

go get gitlab.com/${MY_GL_ORG_GROUP}/${MY_GL_ORG_SUBGROUP}/${MY_REPO}@${MY_COMMIT_ID}
go get gitlab.com/${MY_GL_ORG_GROUP}/${MY_GL_ORG_SUBGROUP}/${MY_REPO}@${MY_COMMIT_ID}: gitlab.com/${MY_GL_ORG_GROUP}/${MY_GL_ORG_SUBGROUP}/${MY_REPO}@${MY_COMMIT_ID}: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /home/${MY_USER}/${PATH_TO_GOPATH}/pkg/mod/cache/vcs/f506075eedf1fdb9094ad13306aaa30af1f5b9a038c7cae6172b7525b6e6fdca: exit status 128:
        remote: 
        remote: ========================================================================
        remote: 
        remote: The project you were looking for could not be found.
        remote: 
        remote: ========================================================================
        remote: 
        fatal: Could not read from remote repository.

        Please make sure you have the correct access rights
        and the repository exists.

Как мне этого добиться?

Мне кажется, я правильно настроил свой S SH ключ с GitLab, как я вижу это:

$ ssh -T git@gitlab.com
Welcome to GitLab, @${MY_GITLAB_USERNAME}!

Я думаю, что я могу go get через S SH хранилище, заканчивающееся .git, потому что я установил это:

git config \
      --global \
      url."ssh://git@gitlab.com".insteadOf \
      "https://gitlab.com"

и я вижу, что у меня есть эта глобальная git конфигурация с:

$ git config --global --list | grep -i url
url.ssh://git@gitlab.com.insteadof=https://gitlab.com

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

go env -w GOPRIVATE=gitlab.com/${MY_GL_ORG_GROUP}/*

Затем я могу проверить этот параметр с помощью:

$ go env | grep -i gitlab
GONOPROXY="gitlab.com/${MY_GL_ORG_GROUP}/*"
GONOSUMDB="gitlab.com/${MY_GL_ORG_GROUP}/*"
GOPRIVATE="gitlab.com/${MY_GL_ORG_GROUP}/*"

Я думаю, что что-то не так с GitLab.com при использовании git с ключами S SH и Go модулями с репозиториями , не заканчивающимися .git, но я не уверен, что еще можно сделать больше, чем указано выше.

Что не так с моей настройкой?

...