问题:
在开发过程中,经常遇到golang依赖的第三方托管在github上,如:
github.com/foo/third_lib
而如上库因为各种原有,需要fork 修改后 提交到本地内网私有git 仓库中。
此时,可通过在 go.mod中增加 replace指令进行替换。
三种方式
1
. 直接替换为内部私有仓库的的地址,并指定tag
-
replace github.com/foo/third_lib => mygit.com/foo/third_lib v1.2.3
2. 指定本地内网仓库 及 依赖的tag-提交日期-commit记录,
此处v0.0.0是
伪版本(pseudo-version),用于在项目中当前commit记录无tag的情况下,理解为占位符。
-
replace github.com/foo/third_lib => mygit.com/foo/third_lib v0.0.0-20230418161637-381874068884
3. 直接指定本地目录, 此处假设已经将mygit.com/foo/third_lib clone 至当前项目的同一级目录
-
replace github.com/foo/third_lib => ../third_lib
以上,优选 第1/2方式,可以自动化构建,且1方式因为有tag更好管理。
此外
如果内部的私有git 配置了禁止通过git clone
https 或 http访问,可以通过 配置~/.gitconfig进一步解决
此处为:
# cat ~/.gitconfig
-
[url "ssh://git@mygit.com/"]
-
insteadOf = https://mygit.com/
-
[url "ssh://git@mygit.com/"]
-
insteadOf = http://mygit.com/
修改完毕后,在执行go mod tidy 对仓库进行更新。
如果执行完毕提示如下错误,
go mod tidy
verifying module: mygit.com/foo/third_lib@v0.0.0-20230418161637-381874068884: reading : reading
mygit.com/foo/third_lib@v0.0.0-20230418161637-381874068884 404 Not Found
执行export GOPRIVATE=mygit.com
更多,可参考:
https://pkg.go.dev/cmd/go#hdr-Configuration_for_downloading_non_public_code
阅读(261) | 评论(0) | 转发(0) |