Go 1.5 中的包版本管理
简介
Go 编程语言是用注重简单性,但即使在这种范例中,它也面临着包版本管理的挑战。本文探讨了 Go 中缺乏内置包版本控制方法的原因,并介绍了 Go 1.5 中引入的解决方案,即供应商。
历史背景
Go 中缺乏内置的包版本控制系统源于保持简单性的愿望。做出此决定的假设是,用户更喜欢轻松获取最新版本的软件包。然而,当用户在处理传递依赖项冲突时遇到挑战时,这种方法的缺点就变得明显了。
依赖管理中的挑战
如果没有包版本控制,开发人员被迫为其产品的主要版本更改创建单独的存储库,从而导致效率低下并降低了软件包历史记录的可见性。此外,它阻碍了在次要版本或微版本之间降级以解决错误,因为官方工具链仅支持获取最新版本。
Go 1.5 中的 Vendoring
解决这些问题由于限制,供应商是作为 Go 1.5 中的实验性功能引入的。该解决方案允许用户对其代码中使用的外部包的版本保持精确的控制。
Vendoring 机制
Vendoring 通过在项目中创建供应商文件夹来进行操作目录。该文件夹包含所需外部包的精确副本,确保项目使用特定版本,即使包已从外部更新。从供应商目录导入包时,导入路径会省略供应商元素,因为它被视为workspace/src文件夹。
示例
考虑以下示例:
/home/user/goworkspace/ src/ mymath/ mymath.go vendor/ github.com/somebob/math math.go
在这种情况下,mymath 包取决于github.com/somebob/math 外部包。要在 mymath.go 中导入此包,将使用以下语法:
import "github.com/somebob/math"
此方法可确保 mymath 导入位于供应商目录中的 github.com/somebob/math 的特定版本。
结论
Go 1.5 中的 Vendoring 提供了解决包版本管理挑战的有价值的解决方案。通过允许开发人员对外部包版本保持细粒度的控制,供应商可以降低风险、提高效率并促进企业采用 Go。
以上是Go 1.5是如何解决包版本管理问题的?的详细内容。更多信息请关注PHP中文网其他相关文章!