使用go-get来要求来自WSL2上私有github repo的依赖关系



我正在windows 10上试用WSL 2,到目前为止进展顺利,但我已经努力了两周,因为出于某种原因,go get不使用或无法使用Git凭据管理器来提示我的凭据。

我关注了这个博客,用GCM建立了WSL2https://www.edwardthomson.com/blog/git_credential_manager_with_windows_subsystem_for_linux.html

它对大多数日常任务都很有效,比如克隆、阅读和写作。但是当使用go get时,我会得到这个错误。

go get <remote github repo>@<latest commit id>
go: <remote github repo> 681dceefc81203e094872401c184d038090d6049 => v0.0.17-0.20200501212733-681dceefc812
go get: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812/go.mod: verifying module: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812/go.mod: reading https://sum.golang.org/lookup/<remote github repo>@v0.0.17-0.20200501212733-681dceefc812: 410 Gone
server response:
not found: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /tmp/gopath/pkg/mod/cache/vcs/232ff028cb2fdebd254e30bfc612843483f0fe3fbeb18d5fc8fb4b20f21c9021: exit status 128:
fatal: could not read Username for 'https://github.com': terminal prompts disabled

已经尝试过ssh密钥,这里提出的解决方案在';终端提示已禁用';github私有回购错误

但错误仍然是一样的,当启用envGIT_TERMINAL_PROMPT=1时,什么都不会发生,我想这是因为WSL2没有这样做的权限。不管怎样,我也试过这个工具https://github.com/microsoft/Git-Credential-Manager-for-Mac-and-Linux通过为普通凭证存储设置一个变量,它会在终端中提示输入凭证。但我使用2FA,因为它是组织所必需的,并且提示只要求输入用户名和密码,所以身份验证失败。

所以我必须联系一个正在使用Mac的伴侣。他能够go get影响go.mod的依赖关系,提交并推动更改,这样我就可以从那里提取并继续。当然,这并不理想,他也没有任何问题,他使用osxkeychain来管理他的git凭据。

有人面临过这个问题吗?或者知道如何解决?事先非常感谢。

Go无法理解某些模块是私有的,它们的校验和不应根据Go的校验和库进行验证。以下错误来自

verifying module: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812/go.mod: reading https://sum.golang.org/lookup/<remote github repo>@v0.0.17-0.20200501212733-681dceefc812: 410 Gone

如果可能,至少使用1.13或更高版本。为了更好地管理私有模块,Go引入了名为GOPRIVATEGONOPROXYGONOSUMDB的env变量。向Go发出您正在导入私人回购的信号的最简单方法是使用GOPRIVATE。将私有转发的模式设置为GOPRIVATEenv变量,以抑制校验和验证和GOPROXY的使用。以下示例避免了该层次结构中所有转发的校验和:

GOPRIVATE=github.com/<your org>/*

在这里和这里查看答案。您也可以执行go help module-private以获得帮助。

相关内容

  • 没有找到相关文章

最新更新