问题标签 [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.
go - 导入更新的 GitHub 存储库,而不会破坏供应商目录中的修改/过时版本
以前,一个 GitHub 存储库位于vendor/github.com
目录中,实际上~/go/src/myapp/vendor/github.com
. 它在某些包中被修改和导入。因此,它既过时又经过修改。
现在,在其他一些包中,我需要导入和使用原始的 GitHub 存储库,即更新和未修改。我怎样才能做到这一点?我有哪些选择?任何提示表示赞赏。
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
添加到预提交挂钩吗?
go - 拥有供应商文件夹有什么好处?
我无法真正理解拥有供应商文件夹的目的。根据我了解到的情况,供应商文件夹似乎只有在您尝试使您的存储库与1.11
. 我们正在运行 golang 1.12.14
。
当我把这件事告诉我的同事时,他说:
请使用带有模块的供应商 - go 没有全局工件。目前,这是确保您拥有密封构建并且当有人在其存储库中更改某些内容时您的代码不会中断的最佳选择。
我以为这就是 Go 模块的作用?我问了这个问题,评论者说我不应该使用供应商?将 `go mod vendor` 添加到预提交挂钩是否有意义?
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 在模块路径中检测到供应商目录(在那里),它应该已经自动使用该标志。
go - 从包的供应商处导入
如何指定从供应商而不是从 GOPATH/GOROOT 导入/使用包?
当我构建/运行 anotherpkpg/main.go 时,我不断收到类型不匹配错误,例如:
根本不可能做到这一点?我知道如果 somepkg 的版本/发行版不同,则可能会发生类型不匹配。但是没有办法引用 vendored somepkg?我认为当我这样做时它会变得更加复杂
go - 通过 vendoring 修改 go 标准库 crypto/tls
对于我的加密研究,我想使用 go TLS 标准库(crypto/tls
和crypto/rsa
)的修改版本创建一个可编写脚本的 go TLS 客户端。该crypto/rsa
库需要以某种方式进行修改,以允许 Bleichenbacher 对 RSA 进行攻击。由于这个修改后的 TLS 客户端将在多台机器上使用(以及全局修改重要核心库的明显缺点),我希望将这些更改与我的项目捆绑在一起。
我首先crypto
从 GitHub 下载文件夹并将其放入我的 go 项目的 vendor 文件夹中。结构如下所示:
在里面scriptable-client.go
,我尝试使用修改后的 TLS 实现,如下所示:
但是,即使我对 RSA 实现进行了更改,该脚本似乎仍会加载加密包的全局版本。
尝试直接使用 RSA 加密时,我收到指示使用全局版本(通过 ubuntu snap 安装)的错误消息:
我究竟做错了什么?供应商甚至是覆盖这样的核心系统库的正确方法吗?
go - 在 macOS (10.14.6) 上使用“shirou/gopsutil”Go 包作为供应商包失败
我试图在influx/telegraf
本地构建并使用go mod vendor
命令供应所有包。然而,有趣的是,构建失败后出现以下错误:
重现步骤(设置 GOPATH 变量后):
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
不使用这些命令来尝试查看其他模块依赖项?
go - 主模块和供应商目录提供的导入被标记为错误
我想了解在复习 go 模块和供应商目录时遇到错误的原因。显然,在主模块和供应商文件夹中具有相同的包会导致错误,我想了解原因。据我了解,如果有一个go.mod
go
甚至不应该检查vendor
文件夹的依赖关系。一旦我运行,go run ./main.go
我会收到以下错误:
go build -mod=mod
但是,在用于构建二进制文件时不会发生这种情况。我会很感激解释为什么会这样。
去.mod
main.go
供应商/test/testpkg/lib.go
testpkg/lib.go
go - 供应商目录创建重复的冲突目录
我从 1.13 --> 1.15 更新了我的 go 版本,现在我的代码中出现了一些错误,这些错误似乎与供应商目录中的代码相关,而与实际导入的代码不同。升级可能不是根本原因,但似乎确实是相关的。
我不是供应商目录的专家,因此可能会遗漏一些明显的东西。我现在遇到很多这样的错误。
错误:
似乎它没有将供应商目录中的“ClientConn”识别为与 $GOPATH/src 中的相同。我没有明确地将任何 go 源文件放在供应商目录中,但无论如何它们最终都在那里。
任何有关如何避免这种情况的帮助将不胜感激。