使用gitea私有仓库作为依赖

实际问题

由于公司团队使用gitea搭建了git私有仓库,在开发Go程序的时候会有一些公共代码,比如插件和主程序之间要共享接口和数据结构,所以就需要在gitea私有仓库中创建依赖仓库,然后其他仓库引用这个私有仓库作为依赖。

解决方案

由于公司是使用的ip地址访问的gitea仓库,为了和go的其他依赖项一样使用域名作为路径的开始,所以先定一个gitea.com域名,然后在~/.gitconfig文件中增加如下配置信息:

[url "http://<gitea服务的ip地址>:<gitea服务开放的端口>/"]
	insteadOf = https://gitea.com/

注意上面替换配置中是将https协议替换为http协议了,这点很重要,因为内部gitea私有仓库是走的http协议访问的。

假设,我们的gitea服务所在ip地址为192.168.0.23,端口为3333,那么上面的配置就可以具体化为如下所示:

[url "http://192.168.0.23:3333"]
	insteadOf = https://gitea.com/

其实可以在gitea仓库的下载地址看到ip地址和端口的,如下图所示:

在这里插入图片描述

以上面的工程zzg/DriverCommonInterface 为例子,在工程中的go.mod文件中要将包的路径申明为如下所示:

module gitea.com/zzg/DriverCommonInterface.git

go 1.22.2

然后使用这个依赖的工程(假设工程为A)中使用go get命令拉取依赖:

go get gitea.com/zzg/DriverCommonInterface.git

然后在工程A的go.mod文件中出现的依赖就是如下所示:

require gitea.com/zzg/DriverCommonInterface.git v1.0.1

其中v1.0.1是为依赖工程zzg/DriverCommonInterface创建的tag,也就是版本号。

知其然知其所以然

go get 原理

go get 可以下载git、svn等管理的源代码仓库

没有找到详细的调用git命令的代码,但是在go get命令的注释中说明了会调用版本控制命令,比如git。

在这里插入图片描述

所以在git的配置文件(~/.gitconfig)中配置了替换规则才会生效。

模块名称

因为模块名称必须和下载路径(gitea.com/zzg/DriverCommonInterface.git)保持一致,所以在DriverCommonInterface工程的go.mod文件中定义的模块名称为gitea.com/zzg/DriverCommonInterface.git,即go.mod内容为如下所示:

module gitea.com/zzg/DriverCommonInterface.git

go 1.22.2

参考资料

一篇文章彻底弄懂Golang私有仓库配置问题

Golang私有仓库配置问题](https://blog.csdn.net/pillar04/article/details/131206819)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值