为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang中版本包?

如何在golang中版本包?

Go
慕后森 2021-09-13 20:14:21
我已经阅读了大量关于导入 3rd 方 go 包的文章,这些问题看起来都很简单,但我不明白的是,我读过的任何内容都没有提及版本控制。在 Dartlang 中有一个 pubspec 文件,它定义了你的包,包括它的版本和它的依赖项,包括它们所需的版本。如果我执行 ago get github.com/gorilla/sessions并编写我的应用程序,然后 6 个月后我必须清除我的目录并重新获取所有内容,此时该包已更新并破坏了与使用旧版本的代码的向后兼容性怎么办?
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

官方版本,来自GO FAQ:

如果您使用外部提供的包并担心它可能会以意想不到的方式更改,最简单的解决方案是将其复制到本地存储库。(这是 Google 在内部采用的方法。)将副本存储在将其标识为本地副本的新导入路径下。

该方法有许多替代方法,主要基于声明您正在使用的那些项目的确切版本。

例如,参见“ Go 中的死简单依赖关系——保持简单并保持理智。 ”(基于emil2k/vend

Go 依赖管理的主要不同选项列于:

“ Go Package Management -- Go 中的依赖管理摘要
(及其关联的GOPM 邮件列表)

2015 年 7 月更新:

  • 此处讨论了Go 团队的官方销售方法。

  • 所谓的“替代去构建工具GB ”,提出在getgb.io由戴夫·切尼。

更新2017年第四季度:提到下面,go dep是为牵制依赖版本的官方工具(即使该钉扎的方法也不是没有批评:见“版本的货物邪教”)。根据其路线图
,它应该在 Go 1.10 开发开始时合并到工具链中。

更新Q2 2018:go dep已取代go mod(模块)围棋1.11,下面就作品vgo


查看完整回答
反对 回复 2021-09-13
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

dep用作golang项目的依赖项管理工具。

dep是 Go 的依赖管理工具。它需要 Go 1.9 或更高版本才能编译。

dep是“官方实验”。从 1.11 开始,Go 工具链(实验性地)采用了一种与 dep 截然不同的方法。因此,我们正在继续开发 dep,但主要致力于开发工具链中版本控制行为的替代原型。

当前状态: 2019 年 1 月

dep 生产使用是安全的。


查看完整回答
反对 回复 2021-09-13
  • 2 回答
  • 0 关注
  • 263 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信