采用Glide对Golang进行包管理

技术学习 · 2017-02-10 15:53:08 · 1305 次点击 · 预计阅读时间 2 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2017-02-10 15:53:08 的文章,其中的信息可能已经有所发展或是发生改变。

概述

  Golang的包管理工具有很多,本篇幅主要介绍Glide进行包管理。

安装及命令介绍

➜ tonny@tonny-pc  ~ go get github.com/Masterminds/glide

命令介绍
glide create|init 初始化项目并创建glide.yaml文件.
glide get 获取单个包
  --all-dependencies 会下载所有关联的依赖包
  -s 删除所有版本控制,如.git
  -v 删除嵌套的vendor
glide install 安装包
glide update|up 更新包

案例测试

准备

  本次测试的包是 github.com/mattn/go-adodb ,这个包其中有一个依赖包是 github.com/go-ole/go-ole。

下载单个包

command:
    glide get github.com/mattn/go-adodb

glide.lock:
    hash:    60061bf3133f0eec2f147f3d80f3e37c402ee12df8cde841b03d80c82a96bab7
    updated: 2016-05-18T23:30:08.5219207+08:00
    imports:
    - name: github.com/mattn/go-adodb
      version: 452cccbbcfb7906b3cbc512992557c1083e1011b
    devImports: []

glide.yaml:
    package: glide_demo6
    import:
    - package: github.com/mattn/go-adodb

下载单个包, --all-dependencies

command:
    glide get --all-dependencies -s -v github.com/mattn/go-adodb

glide.lock:
    hash: 60061bf3133f0eec2f147f3d80f3e37c402ee12df8cde841b03d80c82a96bab7
    updated: 2016-05-18T23:34:48.7545322+08:00
    imports:
    - name: github.com/go-ole/go-ole
      version: 572eabb84c424e76a0d39d31510dd7dfd62f70b2
      subpackages:
      - oleutil
    - name: github.com/gonuts/commander
      version: f8ba4e959ca914268227c3ebbd7f6bf0bb35541a
    - name: github.com/gonuts/flag
      version: 741a6cbd37a30dedc93f817e7de6aaf0ca38a493
    - name: github.com/mattn/go-adodb
      version: 452cccbbcfb7906b3cbc512992557c1083e1011b
    devImports: []

glide.yaml:
    package: glide_demo6
    import:
    - package: github.com/mattn/go-adodb

从lock中可以看到,确实将所有的依赖包都下载了。

下载制定版本号的包

command:
    glide get github.com/go-sql-driver/mysql#v1.2

glide.yaml:
    package: glide_demo
    import:
    - package: github.com/go-sql-driver/mysql
      version: v1.2

团队开发

  在团队开始时,需要将 glide.yaml 和 glide.lock 进行版本控制,vendor 忽略掉。
  模拟下团队开发的流程
  A同学:初始化项目,并提交了源码,其中glide.yaml 和 glide.lock的内容如下

glide.yaml:
    package: glide_demo6
    import:
    - package: github.com/mattn/go-adodb
    - package: github.com/go-ole/go-ole

glide.lock:
    hash: 18e3b9c2f5c11f3268b22ebdbea09636c5cae28e78f0011578f455c485e9d214
    updated: 2016-05-18T23:43:15.8217224+08:00
    imports:
    - name: github.com/go-ole/go-ole
      version: 572eabb84c424e76a0d39d31510dd7dfd62f70b2
    - name: github.com/mattn/go-adodb
      version: 452cccbbcfb7906b3cbc512992557c1083e1011b
    devImports: []

  B同学:拉去项目,执行 glide install,会自动下载对应的包

总结

  使用glide的好处是,每个项目都采用各自独立的包,而且可以很好的控制包的版本,这在团队开发中尤其重要。


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

本文来自:简书

感谢作者:技术学习

查看原文:采用Glide对Golang进行包管理

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

1305 次点击  
加入收藏 微博
qkb_75_go
qkb_75_go · #1 · 10年之前

楼主一直在发这种 帖子,好像发现了新大陆。 按楼主的这个方法来分析 C 语言, 所谓的 C语言的传引用,传递的不也是“指针数值”的一个副本么? 难道也是“传数值”? 那么什么才符合 楼主理想的“传引用”呢 ????

所有语言的 “传引用” 莫不如此, 何坑之有???

楼主,你的基本概念是错的。 拜托,请先自己考虑清楚。 不要着急 “填坑填坑”的,根本没有坑! 是你自己一个人挖了个坑,把你自己掉进去了而已。

qkb_75_go
qkb_75_go · #2 · 10年之前

楼主,你能否举例说明,你想象中的“理想的传引用”是怎样的怎么调用吗?

最好写出伪代码来说明。

让我们大家也都学习学习。

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