【问题标题】:How to use 'go get' or 'go mod vendor' for a specific module, without trying to update other modules?如何在不尝试更新其他模块的情况下对特定模块使用“go get”或“go mod vendor”?
【发布时间】:2020-11-12 17:42:25
【问题描述】:

我正在尝试从 github 获取项目的特定包。

但是,当我使用 go get [url]go mod vendor 时,由于缺乏对我公司的一个存储库的权限,我收到了 git fetch 错误。这个 repo 是 vendored,这就是我们如何绕过它进行 go test、go build 等。

这是错误信息:

go: private.work.repo.com/project/repo@v0.0.0-20190703160253-9c6eb80851f1: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in C:\Users\NICHOLAS.TAN\go\pkg\mod\cache\vcs\37594aeb10b98234e04b4780cf59f32c4ad7bb9da460f552103ae748cea73aa1: exit status 128:
        fatal: remote error: Repository not found
        The requested repository does not exist, or you do not have permission to
        access it.

有没有办法让我使用go get 和/或go mod vendor 而无需这些命令尝试查看其他模块依赖项?

【问题讨论】:

  • 你不能使用go get <package name> 来获取你需要的包吗?
  • 你的 go 版本是什么?你能粘贴go env的结果吗?
  • 使用 GOPRIVATE=*.corp.com go get [url] 会将 *.corp.com 从 go modules 代理中排除,这是从私有仓库获取问题的常见原因。
  • @whitespace 我将更新问题以使其更清楚,但问题是如果我的项目有一个依赖模块“A”需要访问私有仓库,当我尝试“去获取 B”时,我会收到一个关于无法访问 repo A 的错误。

标签: go go-modules govendor go-get


【解决方案1】:

您可以在您的项目目录中获取特定版本的包使用go get <package>@<version>,例如:

% go get github.com/golang/protobuf@v1.4.0 

go: downloading github.com/golang/protobuf v1.4.0

只下载get github.com/golang/protobuf包所需的版本到本地缓存($GOPATH/pkg/mod)并将版本设置为go.mod文件。

毕竟,如果您在本地缓存 ($GOPATH/pkg/mod) 中有来自公司存储库的依赖项,请使用 go mod vendor 创建 vendor(从缓存中获取)。

【讨论】:

  • 谢谢,但是问题不在于我无法获得特定版本,而是它尝试获取已经存在的依赖项,同时尝试go get 一个新的,即导致问题,因为我无权访问所有这些依赖项。
  • 我尝试了这个(获取特定版本),但无法访问我公司的私有仓库?它可以工作(私有仓库依赖项位于我的本地缓存中)
  • @ozma - 你使用模块还是旧方法?
  • @ozma 你找到解决方案了吗?
  • @Sankar 抱歉,我记不清了,但我想我只是暂时从 go.mod/go.sum 中手动删除了这些文件,运行命令,然后将它们添加回来.
【解决方案2】:

获取私有模块时会出现此类问题,请检查您本地系统中已经完成的以下配置

更新 git 全局配置 url

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

更新 go env 以访问私有 go 模块

go env -w GOPRIVATE=github.com/abc/*

然后运行安装命令

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多