关于Golang Go语言中 Go Modules 团队开发时候私有库的问题
关于Golang Go语言中 Go Modules 团队开发时候私有库的问题
背景:公司有两个私有项目放在私有 git 上,这里叫 A 和 B,A 项目有引用 B 的包
有两个问题请教下大家:
1、go mod 会自动下载最新 tag 的代码,如果没有会自动引入最新的 master 提交,这样没问题。但是有 tag 的情况下只会引入 tag,没法引用最新的代码(如果 B 有改动必须打 Tag ?)
2、上面的问题可以用 replace 的方案解决,但是如果团队开发,大家的 gopath 都不一致,go mod 文件会有多份,如何解决?
谢谢大家
更多关于关于Golang Go语言中 Go Modules 团队开发时候私有库的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
- 可以指定 git commit
2. 团队开发在一个机器下面?多份怎么理解呢?
更多关于关于Golang Go语言中 Go Modules 团队开发时候私有库的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
- go get REPO_URL@master
2. replace 到相对路径或者另一个 URL 都可以
1、指定 master 后也会自动更新到最后一个 tag ( tag 代码可能旧于 master,但是他还是会优先 tag )
2、不是的,是指大家各自配置的 GOPATH,或者说项目在电脑里的路径不一致,我想绝对路径会不一样。后来发现相对路径也行。。最后以相对路径解决了
谢谢
1、会以 tag 优先的
2、相对路径是对的,另一个 url 又会出现 1 的问题,版本无法保持最新
使用 git commit checksun 不是 master,另外你 A 仓库是不是没有 go.mod
go get -u github.com/xx/xxxx@master 应该就可以,运行后自动更新 go.mod ,版本号应该是 v0.0.0-date-hash 的形式。
是的 手动 get 下 让 go.mod 自动生成
谢谢两位
因为这个问题,我滚回了 govendor。
可以尝试下楼上大家说的解决方案哦
关于Golang中Go Modules在团队开发时私有库的问题,以下是一些专业的解答和建议:
首先,Go Modules是Golang自1.11版本引入的依赖管理工具,它允许项目在GOPATH之外的位置创建,并方便地管理依赖关系。当使用公有库作为依赖时,通常不会遇到问题。然而,当涉及到私有库时,就需要进行一些额外的配置。
对于私有库,你需要设置GOPRIVATE环境变量,以告知Go Modules哪些仓库是私有的,不应该通过代理去访问。例如,如果你的私有库托管在gitee.com上,你可以通过go env -w GOPRIVATE=gitee.com
来设置。
此外,如果你的私有库不支持HTTPS协议,你还需要进行一些额外的配置,比如使用SSH来替代HTTPS进行访问。这通常涉及到修改git的全局配置,以及可能还需要设置GOINSECURE环境变量来允许不安全的连接(但请注意,这种做法会降低安全性,应谨慎使用)。
最后,建议团队在开发过程中,尽量使用HTTPS协议来托管私有库,并遵循Go Modules的最佳实践来管理依赖关系。这样可以确保项目的安全性和可维护性。
希望这些信息能帮助你解决Go Modules在团队开发时私有库的问题。