vendor自动恢复_解决 vendor 中存在大小写变更问题
前言 go mod (vendor) 是 golang 中依赖管理的一个工具,而 git 是个版本管理工具,两者结合本该是相得益彰事情,然而在某些情况下并不是如此
在某个项目中,需要更新 k8s.io/client-go 以获得更高 kubernetes 版本的支持,原本这个 k8s.io/client-go 设计向下兼容的,所以很大情况升级并不会产生很大的风险,而这就产生了下面问题的导火索
升级
升级 client-go 非常简单,只需执行一下命令 git get -u k8s.io/client-go@v0.19.0
更新vendor也只需执行 go mod vendor
执行之后似乎并没有任何错误,一切都在朝好的方向发展,本地执行构建也没有任何错误 go build # 使用 go mod 编译
go build -mod=vendor # 使用 vendor 编译
结果和预期一样,并没有任何错误,只需提交代码 git add go.mod go.sum
git commit -m "update client-go to v0.19.0"
git add vendor/
git commit -m "update vendor package to v0.19.0"
git push
等待 reviewr 审查结束即可合并到主分支。
然而并不是如此!!!!
问题
reviewr 将指定分支的代码拉取到本地后,进行构建发现,vendor 中缺少依赖 build app: cannot load github.com/googleapis/gnostic/openapiv2: open /go/src/app/vendor/github.com/googleapis/gnostic/openapiv2: no such file or directory
第一直觉是,可能有某些文件并没有提交上去,然后重新执行了一次了 go mod vendor
git add vendor/
git commit -v --amend --no-edit
git push
结果提示,并没有变化 Everything up-to-date, 从这就感觉有点匪夷所思了。通过本地查看,文件是存在的 ls vendor/github.com/googleapis/gnostic LICENSE compiler extensions openapiv2
通过 git ls-files --error-unmatch 命令也是可以查到文件是被跟踪了,这就说明 git push 的时候会上传该文件 git ls-files --error-unmatch vendor/github.com/googleapis/gnostic/openapiv2 vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.go
vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.pb.go
vendor/github.com/googleapis/gnostic/openapiv2/OpenAPIv2.proto
vendor/github.com/googleapis/gnostic/openapiv2/README.md
vendor/github.com/googleapis/gnostic/openapiv2/openapi-2.0.json
在 reviewr 上执行 ls vendor/github.com/googleapis/gnostic LICENSE OpenAPIv2 compiler extensions
发现了在 reviewr 内容竟然和我不一样,OpenAPIv2 存在大写,而我的文件下是小写 openapiv2,这就很奇怪了。在搜索引擎上搜索 git 大小写问题,知道了 git 是默认忽略大小写问题的,就是说 OpenAPIv2 和 openapiv2 对于 git 来说,是同一个,这就导致了不会更新到 git 的问题。
而执行 go mod vendor 的时候,他将会删除目录的。所以在我电脑上不存在任何问题。
修复
知道了问题原因,那就需要着手解决这个问题了。git 默认忽略大小写,是不是只要开启这个设置,就没有问题了?
查看本机 git 配置 git config --get core.ignorecase
true 表示忽略大小写
改成 false git config core.ignorecase false
再执行 git status -s, 确实存在文件未跟踪 ?? vendor/github.com/googleapis/gnostic/openapiv2/
通过以下方式提交 git add vendor/github.com/googleapis/gnostic/openapiv2/
git commit -v --amend --no-edit
git push
reviewr 再次重试,发现问题并没有解决,重复上面的检查步骤,目录里面也还是存在大写 LICENSE OpenAPIv2 compiler extensions
这就直接导致了,懵逼三连了,查找网上资料,通过 git mv 方式, 问题同样没有解决,解决只是在本地解决,任何一个人拉取下来还是一样的问题。
最后经过多次尝试,找到了一种解决方案 git rm -r -f vendor
rm -rf vendor
git commit -m "update venodr"
go mod vendor
git add vendor
git commit -v --amend --no-edit
git push
最终 reviewr 可以通过测试。
参考资料
vendor自动恢复_解决 vendor 中存在大小写变更问题相关推荐
- idea 模块jdk依赖总是自动变_解决IDEA中导入新的maven依赖后Language Level自动重置问题...
问题: 弄了个测试项目,因为有涉及JDK1.8的代码,所以将IDEA中默认的Language Level 5(即对应JDK1.5),修改为了8(即对应JDK1.8),但是每次引入新的maven依赖,自 ...
- vendor自动恢复_push文件到system分区,重启后文件会被自动恢复
push文件到system分区,重启后文件会被自动恢复 2020-02-4 阅读:2488 [DESCRIPTION] 客户反馈有些版本,push文件到system分区之后一旦重启,push的文件会被 ...
- python脚本自动运行失败_解决Python中定时任务线程无法自动退出的问题
python的线程有一个类叫Timer可以,用来创建定时任务,但是它的问题是只能运行一次,如果要重复执行,则只能在任务中再调用一次timer,但这样就存在新的问题了,就是在主进程退出后,不能正常退出子 ...
- python threading timer 退出_解决Python中定时任务线程无法自动退出的问题
python的线程有一个类叫Timer可以,用来创建定时任务,但是它的问题是只能运行一次,如果要重复执行,则只能在任务中再调用一次timer,但这样就存在新的问题了,就是在主进程退出后,不能正常退出子 ...
- excel自动筛选_在Excel中按选择自动筛选
excel自动筛选 In Excel 2003, you can add a couple of buttons to the toolbar to make it easy to filter a ...
- dependency报红_解决IDEA中Maven依赖包导入失败报红问题(总结最有效8种解决方案)...
问题描述: 真的,说来话长,这应该是我花最多时间去解决关于Maven依赖包导入的问题,以前粘贴复制导入,自动下载成功了, 这次怎么搞,怎么让他自动下载都还是红红的一片, 花了大半天,各种尝试,只为搏得 ...
- mybatis多字段排序_解决mybatis中order by排序无效问题
1.#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #{user_id},如果传入的值是111,那么解析成sql时的值为order by "111&qu ...
- python导入类有红线_解决Python中导入自己写的类,被划红线,但不影响执行的问题...
1. 错误描述 之前在学习Python的过程中,导入自己写的包文件时,与之相关的方法等都会被划红线,但并不影响代码执行,如图: 看着红线确实有点强迫症,并且在这个过程当时,当使用该文件里的方法时不会自 ...
- button layui 点击事件_解决layui中的form表单与button的点击事件冲突问题
解决layui中的form表单与button的点击事件冲突问题 layui的form表单位置和button标签的位置重合,会使得button的click事件得不到响应,如图: 蓝色底为form的位置, ...
最新文章
- 详解Asp.net MVC DropDownLists
- SCCM 2016 配置管理系列(Part 12 )
- MHA 日常维护命令集
- Linux 驱动开发之内核模块开发 (三)—— 模块传参
- BAT网页10年巨变,背后的前端技术你都知道吗?
- 问题 E: 编写函数:求数组中的最小值 (Append Code)
- 今天拜读了X先生的作品,深受其益
- iptables转发基础
- Anaconda下载太慢
- 苹果手机投影到墙上_针对商业用户倾情打造,明基E582智能无线投影仪体验
- IT经理人:提高团队工作效率的11个方法
- oracle手动删除dbf文件,oracle删除DBF文件
- python大数据工程师招聘_大数据工程师是做什么的为什么招聘网上薪资都好高啊?...
- web数字可视化有哪些实现的方法?
- 微带线电容设计与仿真
- CAD -2012软件安装的讲解
- CSS3基础一篇完结(豪豪的备忘录)
- python中保留两位小数或者多位小数的方法
- 机器学习(上)线性回归、多项式回归、标准差、百分位数、数据分布、散点图
- Chrono-Chrome下载管理插件
热门文章
- 美博士环保聚焦“限漆令”出台之后的涂料行业
- Mongodb WiredTiger存储引擎特性
- [MOSS 译]如何:在WEB内容查询部件中使用自定义的字段
- WHAT THE DATA SAYS ABOUT KUBERNETES DEPLOYMENT PATTERNS
- Linux设备驱动Hello World程序介绍
- new一个新对象的时候,各属性方法的操行顺序
- 从Eclipse转移到IntelliJ IDEA一点心得
- cocos2d-x的win32编译环境
- iOS开发-简单工厂模式
- 安全×××限 爱因斯坦对安全进程的启示