git如何搭建基于vendor的仓库

948 阅读2分钟
背景:
为了方便包管理,引入govendor进行项目的golang包管理,那有这个几个问题需要解决:
问题:
  • 如何编写vendor.json
  • 因为项目里有.git导致的文件目录不能访问问题如何更好的解决
目前,公司的项目里直接find是无法在vendor目录下找到其它依赖项目的.git的,所以肯定是不能有
  • 如何用govendor管理项目包依赖,并能正确的在持续集成/持续发布平台上编译构建成功并最终发布
如果你自己初次尝试用vendor的话可能需要思考这些问题,特别是第一个问题vendor.json怎么写,后来我才发现这个不是自己写的(自己真的是sx),其实go.15之后的版本已经默认支持govendor了,所以不要担心你的代码放在vendor下在你使用go build的时候它找不到,具体原理自行Google,本篇文章目的只有一个,如何从零搭建一个用govendor管理的repository,我直接上例子,就用gin这个例子吧步骤如下:
1.在git/gitlab上New repository//这一步不解释
git clone 上边的项目地址
cd caoge.videoarch.edge-uploader
govendor init//如果没有安装govendor请安装github.com/kardianos/g…
2初步配置vendor.json
不要方,你init之后会出现vendor/vendor.json的
govendor fetch -v github.com/gin-gonic/g…
然后你会看到json文件里面填充了信息,主要是reversion的版本信息,v1.2
然后,govendor fetch github.com/gin-gonic/g… ,可能时间比较长
完了之后你会看到vendor.json已经很完善了,你可以进行编译,也能通过

另外,不幸如果出现因为ssh登陆而字体设置问题的原因导致的git rm -r dirname失败的情况
参考:


目前比较讨厌的是golang.org/x下边的文件没有好的解决方案,只能自己手动下载在指定依赖的地方然后cp进去,这个时候就会出现第二个问题,所以务必手动find+rm掉.git
各位大神有好的方案欢迎补充~~~
另外,发现一个坑,踩了2小时,(真佩服自己这么挫),在使用govendor fetch -v xxx进行包的依赖更新的时候,发现并没有报错,但是拉下来的是空的目录,在vendor.json中也看到的revision是空的,因为我当时是拉取的新迁移的仓库,所以一直在怀疑我迁移的有问题,搞了半天,后来重新创建个仓库还是这个问题,有点懵逼了,之前这样都好好的,我又尝试go get了下那个仓库,多试了几次发现服务proxy HTTP 503了,我才想起来可能和我配置的https代理有关,我去掉环境该https代理的环境变量之后果然govender fetch获取到了完整的项目,操!!
good luck!!!!