要下班了,摸一会儿鱼。
想到一个问题就是如果把 vendor 目录纳入 git 管理,但是如果在 windows 下和 linux 下同时进行开发,用的 go sdk 都是不一样的,go mod vendor 好像就有问题。
1 mooyo 228 天前 ![]() 五年前就不用 vendor 了吧,老项目吗? |
![]() | 2 Cannian 228 天前 ![]() 现在都用 mod 了,老项目才用 vendor |
![]() | 3 Nazz 228 天前 ![]() 我现在用 go mod tidy 了, 以前喜欢 vendor |
![]() | 5 lasuar 228 天前 ![]() 只有当你用到了那种私有库、临时库,担心引用的库未来可能消失 的时候才会用 vendor 。不过开发时也不好用,比如下载了新库时,直接在 IDE 中输入是不能自动识别的(纯 mod 模式就可以)。现在我都不用 vendor 了,如果有那种比较重要的库,干脆直接 down 下来放本地的 internal pkg 。 |
6 Cheivin 228 天前 ![]() |
![]() | 8 Trim21 228 天前 ![]() > 但是如果在 windows 下和 linux 下同时进行开发,用的 go sdk 都是不一样的,go mod vendor 好像就有问题 会有啥问题? go mod vendor 会选择只 vendor _linux 文件或者 _windows 文件然后忽略另一个吗? |
9 icy37785 228 天前 via iPhone ![]() vendor 是坏文明,vendor 的正确使用姿势就是不用。 |
![]() | 10 sardina 228 天前 ![]() https://github.com/goproxy/goproxy 内网搭建一个 goproxy |
![]() | 11 stormtrooperx5 228 天前 ![]() 咋这么多人不用 vendor ?镜像打包速度快很多啊 |
![]() | 12 iyaozhen 228 天前 ![]() 99%场景不需要 go mod vendor 现在唯一用 vendor 的地方,是要打 go 插件,而且也不把 vendor 提交到 git ,而是 CI 环境固定 go 版本(宿主要和插件一模一样版本号),执行 go mod vendor 后再 build |
13 HappyAndSmile 228 天前 @stormtrooperx5 自己搭一个 go mod proxy ,为什么会需要 vendor ?为什么会慢? |
![]() | 15 arcfya 227 天前 ![]() 除非特殊环境一定不允许开 go mod proxy (比如各种政府国企单位),不然不推荐使用 vendor 。 vendor 在不同 go sdk 下确实可能有问题,比如 go 的那几个 crypto 库,我就遇到过 sdk 不兼容的问题 |
![]() | 16 stormtrooperx5 227 天前 @HappyAndSmile 依赖库多了再怎么自建 proxy 也比不上直接读本地快 |
17 zgh123 227 天前 如果旧项目采用的 vendor ,如何升级把 vendor 目录从 git 中去除呢? |
![]() | 18 lasuar 227 天前 @zgh123 #17 你这个问题直接 kimi 可以解决,我就不贴答案了。问题是“采用 vendor 模式的 go 项目中,如何升级把 vendor 目录从 git 中去除。注意,vendor 内可能有已经失效的远程库,此时如何区分”。 解决的关键是在本地新建 xvendor 目录存放失效的远程库,然后在 go.mod 文件中使用 replace 语法帮助 go 定位这些库。 |
![]() | 19 to2false 226 天前 vendor 放进 git ,我就有个问题,是不考虑 code review 吗 |
![]() | 20 stormtrooperx5 226 天前 @to2false 自动排除 vendor 目录,这不就一脚本的事 |
![]() | 21 to2false 225 天前 @stormtrooperx5 题主的意思不是想把 vendor 带进 git 提交里吗?那不爆炸 |
![]() | 22 stormtrooperx5 225 天前 @to2false code review 的时候自动排除 vendor 目录,和把 vendor 带进 git ,这两个操作冲突吗?我们有个项目加上 vendor 200w 行代码,一直这样管理的。开发效率很快,打包只要 2 分钟,从推送代码到滚动部署完也就五分钟 |
![]() | 23 to2false 225 天前 |
![]() | 24 stormtrooperx5 225 天前 ![]() @to2false 我不知道什么公司用 github 托管代码,这也太抽象了。在 gitlab 上很好设置 https://docs.gitlab.com/user/project/merge_requests/changes/#collapse-generated-files |
![]() | 25 douz OP @stormtrooperx5 #24 学到了 |