我已经读了一大堆关于导入第三方go包的文章和问题,这些问题看起来都很简单,但我不明白的是,我读过的文章中没有一篇提到版本控制。在Dartlang中,有一个pubspec文件,它定义了您的包,包括它的版本和依赖项,包括它们所需的版本。如果我做了一个go get github.com/gorilla/sessions并编写了我的应用程序,然后6个月后我不得不清理我的目录并重新获得所有东西,在这段时间里,这个包已经被更新,并破坏了与我使用旧版本的代码的向后兼容性?
发布于 2015-02-24 22:56:34
官方版本,来自GO FAQ
如果您正在使用外部提供的包,并且担心它可能会以意想不到的方式更改,最简单的解决方案是将其复制到您的本地存储库。(这是谷歌内部采取的方法。)将副本存储在将其标识为本地副本的新导入路径下。
该方法有许多替代方法,主要是基于声明您正在使用的项目的确切版本。
参见示例"Dead Simple Dependencies in Go -- Keep it simple and keep your sanity.“(基于emil2k/vend)
下面列出了Go Dependency Management的主要不同选项:
"“
(及其关联的GOPM mailing list)
更新2015年7月:
Go团队的官方提供方法是由Dave Cheney.在上提出的名为“Dave Cheney.gb”的discussed here.
更新Q4 2017:正如提到的below,是固定依赖版本的官方工具(即使这种固定方法并不是没有批评的:参见"The cargo cult of versioning")。
当Go 1.10开发开始时,它应该被合并到工具链中,according to its roadmap。
更新Q2 2018:go dep已被 in ,following works on vgo取代。
发布于 2017-11-16 12:24:00
我使用dep作为golang项目的依赖项管理工具。请使用下面的链接dep tool获取更多信息。
dep是Go的依赖管理工具。它需要Go 1.9或更高版本才能编译。
dep是“官方实验”。从1.11开始,Go工具链(实验性地)采用了与dep截然不同的方法。因此,我们正在继续开发dep,但齿轮工作主要是为了开发工具链中版本控制行为的替代原型。
当前状态: 2019年1月
dep可安全用于生产。
https://stackoverflow.com/questions/28698814
复制相似问题