如何设置GOPRIVATE环境变量

时间:2019-10-09 13:42:08

标签: go environment-variables

我开始从事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已消失

我可以轻松地从终端克隆私人仓库,这意味着我的ssh密钥已正确配置。我读过here,我需要设置GOPRIVATE环境变量,但是我不确定该怎么做。任何人都可以回答或指向相关教程吗?找不到任何有用的东西

开始: v1.13, 操作系统: macOS Mojave

2 个答案:

答案 0 :(得分:6)

简短答案:

go env -w GOPRIVATE=github.com/repoURL/private-repo

OR

如果您想允许您组织中的所有私人仓库,请

go env -w GOPRIVATE=github.com/{OrgNameHere}/*

长答案:

检查"Module configuration for non-public modules"以获得更多信息:

  

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

 GOPRIVATE=*.corp.example.com,rsc.io/private
     

使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中添加以下内容:

[url "ssh://git@git.local.intranet/"]
       insteadOf = https://git.local.intranet/

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

答案 1 :(得分:1)

仅是ssh用法的后续操作,这是用于使其工作的命令:

GitHub:

git config --global url."git@github.com:".insteadOf "https://github.com/"

Bitbucket:

git config --global url."git@bitbucket.org:".insteadOf "https://bitbucket.org/"