go mod 安装依赖 unkown revision问题的解决方案


Posted in Golang onMay 06, 2021

背景

公司一个golang的项目,使用到了公司的私有仓库,去执行go mod tidy(下载依赖)的时候,到download公司私有库的时候就报错,报错信息也不明显,只是提示找不到影响版本unkown revision

小知识

go mod

golang用来管理用来的,类似java的maven(但肯定没有maven这么好用)

go mod tidy ,下载更新依赖

go install这种下载依赖的方式其实是通过go get的方式去下载的

go insall -x 加上-x命令,可以查看更多的错误信息

golang环境配置

linux

安装go >= 1.12.x
vi /etc/profile
export GOROOT=/usr/local/go (go语言安装路径)
export GOPATH=/data/go (go业务代码环境路径)
export GO111MODULE=on (启用Mod依赖)
export GOPORT=8082 (启动端口,默认8080)
export GIN_MODE=debug (gin环境模式,线上用release)
export GOPRIVATE=gitlab.XXXX.com/XXX/* (公司私有私有库)
source /etc/profile

可惜我的环境是windows上的,索性也折腾了一下

使用的是windows的powershell
ls env:  显示环境变量
$env:GOPRIVATE="gitlab.XXXX.com/XXX/*"   设置环境变量

go mod 安装依赖 unkown revision问题的解决方案

当然你可以直接通过图形化界面去配置,原理一致

git 配置

git的默认配置在当前用户目录的.gitconfig文件中,不管是windows还是linux

git config -l 查看git的所有配置
git config --global user.name="jwen" 设置global配置

踩坑

golang版本问题

电脑上本来使用的是go1.12,看代码里面给出的说是大于1.12就行了的,但知道golang的1.12和1.13版本有比较大区别,因为我就强行升级了一波,直接来到了golang1.14版本

在1.12版本的时候,要手动打开GO111MODULE ,就是导入这个环境变量GO111MODULE=on

而在1.13版本的话,就跟根据目录是否有go.mod文件自动打开的

所以建议升级就golang版本到1.13以上版本

**

git版本问题

这个是万万没想到的,说是go mod调用链中会用到一些git指令,当git版本比较旧时,调用失败产生错误,并给出歧义的提示信息,提示unknown revision

解决方法:更新git

gitlab请求问题

公司的gitlab仓库请求的是http请求,而不是https请求,这个需要根据公司实际情况来看

解决办法

1、确认golang,git版本,建议升级到最新版本;

2、新增golang的环境变量,新增GOPRIVATE,value配置为自己需求的私有仓库,让golang可以下载私有库的东西

建议直接golang设置
golang设置
go env -w GOPRIVATE="gitlab.xxx.com/xxxx/*"
linux配置
export GOPRIVATE=gitlab.xxx.com/xxxx/*
windows配置
$env:GOPRIVATE="gitlab.XXXX.com/XXX/*"

3、修改git配置,因为go install/mod tidy 去下载依赖其实是通过git命令去下载的,而且默认是http协议去下载的,建议是修改为ssh协议去获取

方法一:通过修改文件方式,去到当前用户目录修改.gitconfig文件,新增如下,注意私有库是http还是https

[url "git@gitlab.xxxx.com:"]
 insteadOf = http://gitlab.xxxxx.com/

方法二:通过命令行形式,直接执行命令如下:

git config --global url."git@gitlab.xxxx.com:".insteadOf http://gitlab.xxxx.com/

4、然后执行go install 或者 go mod tidy确认是否可以正常下载依赖

补充:go mod download 私有仓库依赖时返回 unknown revision v1.0.1问题处理

1、go设置私有仓库

go env -w GOPRIVATE="YourRepositorySite/*"

2、git config --global url."https://YourRepositorySite".insteadof "ssh:git@YourRepositorySite"

将ssh地址切换成https

3、设置记住密码

git config --global credential.helper store

4、git clone YourRepositorySite 记住密码

5、go mod download下载成功

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Golang 相关文章推荐
win10下go mod配置方式
Apr 25 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
golang 比较浮点数的大小方式
May 02 Golang
golang elasticsearch Client的使用详解
May 05 Golang
浅谈golang 中time.After释放的问题
May 05 Golang
go语言中fallthrough的用法说明
May 06 Golang
go语言基础 seek光标位置os包的使用
May 09 Golang
试了下Golang实现try catch的方法
Jul 01 Golang
Go 语言结构实例分析
Jul 04 Golang
Golang入门之计时器
May 04 Golang
Golang并发工具Singleflight
May 06 Golang
Go web入门Go pongo2模板引擎
May 20 Golang
解决golang 关于全局变量的坑
May 06 #Golang
Goland使用Go Modules创建/管理项目的操作
解决goland 导入项目后import里的包报红问题
Go 自定义package包设置与导入操作
goland 设置project gopath的操作
解决Goland 同一个package中函数互相调用的问题
浅谈golang package中init方法的多处定义及运行顺序问题
You might like
在PHP的图形函数中显示汉字
2006/10/09 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
javascript 数组排序函数
2009/08/20 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
Python 错误和异常代码详解
2018/01/29 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
2014年团总支工作总结
2014/11/21 职场文书
贷款收入证明格式
2015/06/24 职场文书
心得体会格式及范文
2016/01/25 职场文书
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server
MySQL 条件查询的常用操作
2022/04/28 MySQL