请教:module模式下,如何设置可以让go get始终使用git来下载包,环境变量GOVCS无效?

xiongyejun · 2022-10-26 21:30:57 · 3259 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2022-10-26 21:30:57 的主题,其中的信息可能已经有所发展或是发生改变。

因工作内网不能连接外网,本人在内网服务器布置了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进行替换为内网地址,或者有其他更好的解决办法?


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3259 次点击  
加入收藏 微博
11 回复  |  直到 2022-11-29 22:06:22
lysShub
lysShub · #1 · 2年之前

设置 goproxy, 没必要自己搭建git server

xiongyejun
xiongyejun · #2 · 2年之前
lysShublysShub #1 回复

设置 goproxy, 没必要自己搭建git server

goproxy不知道怎么样,能详细指教下吗,具体要如何处理?

jan-bar
jan-bar · #3 · 2年之前
xiongyejunxiongyejun #2 回复

#1楼 @lysShub goproxy不知道怎么样,能详细指教下吗,具体要如何处理?

https://goproxy.cn/ 官方都给了自建服务方法,你只需要在你内网找到一台可以访问goproxy的机器,在上面搭建服务。内网其他机器用你这个代理就行。

xiongyejun
xiongyejun · #4 · 2年之前
jan-barjan-bar #3 回复

#2楼 @xiongyejun https://goproxy.cn/ 官方都给了自建服务方法,你只需要在你内网找到一台可以访问goproxy的机器,在上面搭建服务。内网其他机器用你这个代理就行。

我工作内网是物理隔离的,无法访问外网!

jan-bar
jan-bar · #5 · 2年之前

那就蛋疼咯

lysShub
lysShub · #6 · 2年之前

4楼 @xiongyejun 不能访问外网挺麻烦的。要是我,我会直接将第三方包改成自己的一个包。当然你内网搭建个git server也可以;至于golang.org/x,你在insteadof 里把这个域名再加上就可以了

tuzhiya
tuzhiya · #7 · 2年之前

用vender或者1.19开始的worker工作空间开发吧。提前到外网把要用的包下载到vender里面或者到工作空间里面,然后拷贝到工作环境开发

xiongyejun
xiongyejun · #8 · 2年之前
lysShublysShub #6 回复

4楼 @xiongyejun 不能访问外网挺麻烦的。要是我,我会直接将第三方包改成自己的一个包。当然你内网搭建个git server也可以;至于golang.org/x,你在insteadof 里把这个域名再加上就可以了

golang.org/x这一类包不行,默认是发https://包名?go-get=1请求来获取使用哪个VCS

xiongyejun
xiongyejun · #9 · 2年之前
tuzhiyatuzhiya #7 回复

用vender或者1.19开始的worker工作空间开发吧。提前到外网把要用的包下载到vender里面或者到工作空间里面,然后拷贝到工作环境开发

vender还是不大方便,内网还希望能多台电脑共用导入到git仓库

lysShub
lysShub · #10 · 2年之前
xiongyejunxiongyejun #8 回复

#6楼 @lysShub golang.org/x这一类包不行,默认是发https://包名?go-get=1请求来获取使用哪个VCS

把golang.org加入 insteadOf 不行?是没有替换还是啥?

xiongyejun
xiongyejun · #11 · 2年之前
lysShublysShub #10 回复

#8楼 @xiongyejun 把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!

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传