【发布时间】:2022-05-06 02:01:24
【问题描述】:
我在计算机 A 上开发了一个 repo,并创建了一个我签入的 go.mod/go.sum。
我使用计算机 B 上的 go.mod/go.sum 文件提取该 repo,但是当我尝试构建程序时,无法满足模块约束。
$ go build
go: finding github.ibm.com/kms/key-protect-client v0.1.5
go: finding golang.org/x/tools v0.0.0-20180221164845-07fd8470d635
go: github.ibm.com/kms/key-protect-client@v0.1.5: unknown revision v0.1.5
go: error loading module requirements
失败的 repo 是一个私有 repo,由于某种原因它没有被下载到模块缓存中。在另一台计算机上,下载依赖项并且构建成功。我正在同一个域中构建另一个私有仓库,所以我知道我的 github 凭据让我可以访问这些仓库。但是由于某种原因,go 模块系统无法访问依赖的 repo。
我找不到更多关于如何调试的信息。
【问题讨论】:
-
错误不是找不到,而是
unknown revision v0.1.5- 表示确实找到了,但是那个git标签不存在。 -
@adrian,该标签存在于 repo 中,因为它的存在使它成为计算机 A 上的 go.mod 文件。只是无法在计算机 B 上使用它,我想明白为什么。整个私有域 (github.ibm.com) 没有在 mod 缓存中创建,我认为这是在计算机 B 上找不到标签的原因。
-
不确定 IBM 的 GitHub 实例是否可行,但可以在 SO:stackoverflow.com/questions/53516358/…(使用 GITHUB_TOKEN)的此问题的答案中找到潜在的解决方案。
-
@retgits 它确实与访问有关:它没有选择正确的协议,我还没有找到如何在 go build 工具中控制它的指导。计算机 B 上有多个 git 身份,而我专门用于该 repo 的本地 git 配置似乎无法控制协议,因此它在需要使用令牌的地方使用 https。
-
你能用git命令行克隆计算机B上的github.ibm.com/kms/key-protect-client吗?如果不是,听起来更像是 git 问题而不是 go 问题。