Golang go потерпел неудачу с помощью git ls-remote -q с неверным URL @ Go 1.13 - PullRequest
0 голосов
/ 18 октября 2019

ОК в соответствии с https://github.com/golang/go/issues/34094, go 1.13.3 исправил эту проблему

Env: Go 1.13, Windows

Я получил свежую копию Goна компьютере с Windows и попробуйте собрать мой проект здесь.

Однако мод, который раньше работал, сейчас терпит неудачу:

C:\xxx> go get -v private.repo.com/dir/utils.git
get "private.repo.com/dirxxxx": found meta tag get.metaImport{Prefix:"private.repo.com/dirxxxx", VCS:"git", RepoRoot:"https://private.repo.com/dirxxxx.git"} at //private.repo.com/dirxxxx?go-get=1
get "private.repo.com": found meta tag get.metaImport{Prefix:"private.repo.com", VCS:"git", RepoRoot:"https://private.repo.com.git"} at //private.repo.com/?go-get=1
go: finding private.repo.com/dirxxxx/utils.git v0.0.5
go: downloading private.repo.com/dirxxxx/utils.git v0.0.5
go: extracting private.repo.com/dirxxxx/utils.git v0.0.5
go get private.repo.com/dirxxxx/utils.git: git ls-remote -q https://private.repo.com/dirxxxx.git in C:\Users\admin\go\pkg\mod\cache\vcs\227f0870299637a3fadb469f608679095de39005c860e3949d82a547e8c30143: exit status 128:
        GitLab: The project you were looking for could not be found.
        fatal: Could not read from remote repository.

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

Что, конечно, не так, посколькуна самом деле нет https://private.repo.com/dirxxxx.git.

У нас есть https://private.repo.com/dirxxxx/utils.git. Как заставить go git использовать определенный тег или пропустить ls-remote, так как он уже нашел версию и распаковывает файлы lol


Я настраиваю GOPROXY = direct в соответствии с https://golang.org/doc/go1.13,, так как я использую частное репо.

А также установите прокси-сервер и все остальное, следуя инструкциям, но проблемы остаются.

Есть какие-нибудь советы? Заранее спасибо!

1 Ответ

0 голосов
/ 18 октября 2019

Псевдоним

Если вы переместили свой репозиторий из https://private.repo.com/dirxxxx.git в https://private.repo.com/dirxxxx/utils.git, вы можете использовать директиву replace в вашем файле go.mod для определения путей псевдонимов:

replace private.repo.com/dirxxxx => private.repo.com/dirxxxx/utils v0.0.5

Таким образом, когда вы запускаете go get private.repo.com/dirxxxx, он будет извлекать https://private.repo.com/dirxxxx/utils.git.

Аутентификация HTTPS

И если ваш репозиторий защищен паролем, вы можетесконфигурируйте ваш git с помощью имени пользователя и пароля следующим образом:

git config --global url."https://username:password@private.repo.com/".insteadOf "https://private.repo.com/"

, который генерирует раздел в вашем ~/.gitconfig следующим образом:

[url "https://username:password@private.repo.com/"]
    insteadOf = https://private.repo.com/
...