2015-02-24 80 views
7

我已经阅读了大量的文章和关于导入第三方软件包的问题,​​这些软件看起来很简单,但我不明白的是,我没有看到任何对版本控制的引用。在Dartlang中有一个pubspec文件,它定义了你的软件包,包括它的版本和它的依赖关系,包括他们需要的版本。如果我做了go get github.com/gorilla/sessions并写了我的应用程序,然后6个月后,我必须清除我的目录并重新获得所有内容,在这段时间内该软件包已更新并与我的代码使用旧版本时向后兼容?如何在golang中更新软件包?

回答

9

正式版,从GO FAQ

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

有许多替代这种方法,主要是基于声明您使用的这些项目的确切版本。

例如,见 “Dead Simple Dependencies in Go -- Keep it simple and keep your sanity.”(基于emil2k/vend

对围棋依赖管理的主要不同选项在上市:

Go Package Management -- A summary of dependency management in Go
(及其联系人GOPM mailing list

2015年7月更新:

更新2017年第四季度:如前所述belowgo dep是钉住依赖版本的官方工具(即使该钉扎的方法也不是没有批评:详见“The cargo cult of versioning”)。
当Go 1.10开发开始时,它应该被合并到工具链中,according to its roadmap

+0

+1包括良好的链接。我喜欢使用gopkg.in(在上一个链接中提到),因为它似乎是一种理智的方式来声明“我想要什么版本?”,因为“我想要什么提交哈希?”对于使用你写的东西的新开发者来说有点神秘。 – pswaminathan 2015-02-25 05:40:26

1

我使用dep作为golang项目的依赖项管理工具。请使用以下链接dep tool获取更多信息。

dep是Go的原型依赖管理工具。它需要Go 1.8或更新来编译。

dep是官方的实验,但还没有官方的工具。

现状: 2017年11月

dep是生产安全使用。

相关问题