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