因工作内网不能连接外网,本人在内网服务器布置了gitblit,把一些用到的开源项目git仓库导入到内网使用,在module模式下,github.com的包使用git url的insteadOf进行替换:
[url "http://用户名@内网IP/~用户名/"]
insteadOf =github.com/用户名/
go get能够正常工作。
但是golang.org/x之类的包,由于不是默认使用git来下载,需要向地址:https://包名?go-get=1发送请求,来确认VCS和仓库地址,造成无法正常使用。
也尝试设置GOVCS=*:git
,依然无效。
请问是否有办法设置go get始终使用git来下载?这样我可以使用git url的insteadOf进行替换为内网地址,或者有其他更好的解决办法?
有疑问加站长微信联系(非本文作者)

设置 goproxy, 没必要自己搭建git server
goproxy不知道怎么样,能详细指教下吗,具体要如何处理?
https://goproxy.cn/ 官方都给了自建服务方法,你只需要在你内网找到一台可以访问goproxy的机器,在上面搭建服务。内网其他机器用你这个代理就行。
我工作内网是物理隔离的,无法访问外网!
那就蛋疼咯
4楼 @xiongyejun 不能访问外网挺麻烦的。要是我,我会直接将第三方包改成自己的一个包。当然你内网搭建个git server也可以;至于golang.org/x,你在insteadof 里把这个域名再加上就可以了
用vender或者1.19开始的worker工作空间开发吧。提前到外网把要用的包下载到vender里面或者到工作空间里面,然后拷贝到工作环境开发
golang.org/x这一类包不行,默认是发https://包名?go-get=1请求来获取使用哪个VCS
vender还是不大方便,内网还希望能多台电脑共用导入到git仓库
把golang.org加入 insteadOf 不行?是没有替换还是啥?
insteadOf是git的,在进入到某个vcs工具之前,go需要确定使用哪个vcs,在源码\src\cmd\go\internal\vcs\vcs.go(var vcsPaths = []*vcsPath)中有具体的定义,除此之外的需要发送https://包名?go-get=1请求来获取使用哪个VCS。
目前我的做法是直接需改源码,重新编译go.exe!