如何设置 GOPRIVATE 环境变量

Usa*_*jad 52 environment-variables go go-modules

我开始研究一个Go项目,它使用 Github 私有存储库中的一些私有模块,每当我尝试运行go run main.go它时,都会出现以下410 Gone错误:

验证 github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:阅读https://sum.golang。 org/lookup/github.com/!repoURL/go-proto@v2.86.0+incompatible : 410 Gone

我可以轻松地从终端克隆私有 repo,这意味着我的ssh密钥配置正确。我在这里读到我需要设置GOPRIVATE环境变量,但我不知道该怎么做。

任何人都可以回答或指向相关教程吗?

转到: v1.13,操作系统: macOS Mojave

ifn*_*tak 92

简答:

go env -w GOPRIVATE=github.com/repoURL/private-repo
Run Code Online (Sandbox Code Playgroud)

或者

如果您想允许来自您组织的所有私有存储库

go env -w GOPRIVATE=github.com/<OrgNameHere>/*
Run Code Online (Sandbox Code Playgroud)

长答案:

检查“非公共模块的模块配置”以获取更多信息:

GOPRIVATE 环境变量控制 go 命令认为哪些模块是私有的(不公开),因此不应使用代理或校验和数据库。该变量是模块路径前缀的 glob 模式(在 Go 的 path.Match 的语法中)的逗号分隔列表。例如,

 GOPRIVATE=*.corp.example.com,rsc.io/private
Run Code Online (Sandbox Code Playgroud)

导致 go 命令将路径前缀匹配任一模式的任何模块视为私有模块,包括 git.corp.example.com/xyzzy、rsc.io/private 和 rsc.io/private/quux。

. .

“go env -w”命令(参见“go help env”)可用于为将来的 go 命令调用设置这些变量。


ssh使用注意事项:

如果您使用ssh访问 git repo(本地托管),您可能需要将以下内容添加到您的~/.gitconfig:

 GOPRIVATE=*.corp.example.com,rsc.io/private
Run Code Online (Sandbox Code Playgroud)

使go命令能够访问 git 服务器。

  • 在“zsh”中执行时,命令给出“zsh:未找到匹配项”。通过编写“\*”来转义星号,这样它就不会在其上扩展。 (7认同)
  • 谢谢!现在正在工作,所以技巧是使用通配符 url 和组织名称。`go env -w GOPRIVATE=github.com/{OrgNameHere}/*` (2认同)
  • 使用“export GOPRIVATE=*”将当前目录中的所有文件名分配给 GOPRIVATE,这不是您想要的。 (2认同)

Ser*_*aly 28

如果 zsh 使用:

go env -w GOPRIVATE='gitlab.my_firm_name.com/*'

否则得到

zsh: no matches found: GOPRIVATE=gitlab.my_firm_name.com/*


小智 6

只需跟进 ssh 的使用,这是用于使其工作的命令:

GitHub:

git config --global url."git@github.com:".insteadOf "https://github.com/"
Run Code Online (Sandbox Code Playgroud)

比特桶:

git config --global url."git@bitbucket.org:".insteadOf "https://bitbucket.org/"
Run Code Online (Sandbox Code Playgroud)