问题标签 [govendor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
15 浏览

go - 导入更新的 GitHub 存储库,而不会破坏供应商目录中的修改/过时版本

以前,一个 GitHub 存储库位于vendor/github.com目录中,实际上~/go/src/myapp/vendor/github.com. 它在某些包中被修改和导入。因此,它既过时又经过修改。

现在,在其他一些包中,我需要导入和使用原始的 GitHub 存储库,即更新和未修改。我怎样才能做到这一点?我有哪些选择?任何提示表示赞赏。

0 投票
1 回答
1100 浏览

go - 将 `go mod vendor` 添加到预提交挂钩是否有意义?

设置:

  • 我们的项目正在使用golang 1.12.14
  • 我们正在使用go build -mod=vendor

问题:当新的依赖项添加到go.mod供应商文件夹时,没有更新,人们正在提交代码并忘记运行go mod vendor以更新文件夹。我的理解是,由于-mod=vendor指定使用vendor文件夹中的包,因此该go.mod文件与我们在构建项目时实际使用的文件存在差异。

问题:应该go mod vendor添加到预提交挂钩吗?

0 投票
2 回答
10105 浏览

go - 拥有供应商文件夹有什么好处?

我无法真正理解拥有供应商文件夹的目的。根据我了解到的情况,供应商文件夹似乎只有在您尝试使您的存储库与1.11. 我们正在运行 golang 1.12.14

当我把这件事告诉我的同事时,他说:

请使用带有模块的供应商 - go 没有全局工件。目前,这是确保您拥有密封构建并且当有人在其存储库中更改某些内容时您的代码不会中断的最佳选择。

我以为这就是 Go 模块的作用?我问了这个问题,评论者说我不应该使用供应商?将 `go mod vendor` 添加到预提交挂钩是否有意义?

0 投票
1 回答
1606 浏览

docker - Go 1.14 模块构建命令忽略 Docker 中的供应商目录

除非依赖项已更改,否则如何go build在 Docker 中获取命令以在每次构建时使用模块缓存或供应商目录?

我已经尝试了这两种方法,但结果不一致:

如何在 Docker 容器中保留 go 1.11 模块? ^ 这不起作用,我相信因为我使用的是 Docker “builder” 模式。

https://medium.com/@monirz/golang-dependency-solution-with-go-module-and-docker-8967da6dd9f6 ^ 这应该可以,但由于某种原因不能...

我正在一台服务器上工作,对于我对 go 源代码所做的每一个小改动,我都需要重新编译是有道理的,但是那一步也必须再次重新下载所有依赖项是没有意义的,每次。

我正在将此服务器构建为go module,这是我当前的 Dockerfile:

我还尝试将-mod=vendor标志添加到 go 命令中并且它不会改变行为......如果 1.14 在模块路径中检测到供应商目录(在那里),它应该已经自动使用该标志。

0 投票
1 回答
166 浏览

go - 从包的供应商处导入

如何指定从供应商而不是从 GOPATH/GOROOT 导入/使用包?

当我构建/运行 anotherpkpg/main.go 时,我不断收到类型不匹配错误,例如:

根本不可能做到这一点?我知道如果 somepkg 的版本/发行版不同,则可能会发生类型不匹配。但是没有办法引用 vendored somepkg?我认为当我这样做时它会变得更加复杂

0 投票
1 回答
166 浏览

go - 通过 vendoring 修改 go 标准库 crypto/tls

对于我的加密研究,我想使用 go TLS 标准库(crypto/tlscrypto/rsa)的修改版本创建一个可编写脚本的 go TLS 客户端。该crypto/rsa库需要以某种方式进行修改,以允许 Bleichenbacher 对 RSA 进行攻击。由于这个修改后的 TLS 客户端将在多台机器上使用(以及全局修改重要核心库的明显缺点),我希望将这些更改与我的项目捆绑在一起。

我首先crypto从 GitHub 下载文件夹并将其放入我的 go 项目的 vendor 文件夹中。结构如下所示:

在里面scriptable-client.go,我尝试使用修改后的 TLS 实现,如下所示:

但是,即使我对 RSA 实现进行了更改,该脚本似乎仍会加载加密包的全局版本。

尝试直接使用 RSA 加密时,我收到指示使用全局版本(通过 ubuntu snap 安装)的错误消息:

我究竟做错了什么?供应商甚至是覆盖这样的核心系统库的正确方法吗?

0 投票
2 回答
264 浏览

go - 在 macOS (10.14.6) 上使用“shirou/gopsutil”Go 包作为供应商包失败

我试图在influx/telegraf本地构建并使用go mod vendor命令供应所有包。然而,有趣的是,构建失败后出现以下错误:

重现步骤(设置 GOPATH 变量后):

0 投票
2 回答
22101 浏览

go - 如何在不尝试更新其他模块的情况下对特定模块使用“go get”或“go mod vendor”?

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

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

这是错误消息:

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

0 投票
1 回答
44 浏览

go - 主模块和供应商目录提供的导入被标记为错误

我想了解在复习 go 模块和供应商目录时遇到错误的原因。显然,在主模块和供应商文件夹中具有相同的包会导致错误,我想了解原因。据我了解,如果有一个go.mod go甚至不应该检查vendor文件夹的依赖关系。一旦我运行,go run ./main.go我会收到以下错误:

go build -mod=mod但是,在用于构建二进制文件时不会发生这种情况。我会很感激解释为什么会这样。

去.mod

main.go

供应商/test/testpkg/lib.go

testpkg/lib.go

0 投票
1 回答
23 浏览

go - 供应商目录创建重复的冲突目录

我从 1.13 --> 1.15 更新了我的 go 版本,现在我的代码中出现了一些错误,这些错误似乎与供应商目录中的代码相关,而与实际导入的代码不同。升级可能不是根本原因,但似乎确实是相关的。

我不是供应商目录的专家,因此可能会遗漏一些明显的东西。我现在遇到很多这样的错误。

错误:

似乎它没有将供应商目录中的“ClientConn”识别为与 $GOPATH/src 中的相同。我没有明确地将任何 go 源文件放在供应商目录中,但无论如何它们最终都在那里。

任何有关如何避免这种情况的帮助将不胜感激。