使用 dep 时强制依赖项的特定版本
Force a specific version for a dependency when using dep
我正在使用 dep 来管理我正在编写的 Go 工具的依赖项。
此工具使用 https://github.com/desertbit/grumble as an dependency. This in turn uses https://github.com/chzyer/readline 作为依赖项。问题是,当尝试 运行 我的工具时,出现以下错误:
vendor/github.com/desertbit/grumble/app.go:295:20: unknown field 'HistorySearchFold' in struct literal of type readline.Config
我知道为什么会这样。 grumble 使用 master 分支 readline 作为依赖。在此字段 HistorySearchFold
可用。
使用 dep init
/dep ensure
时,不是 master,而是 1.4 标签被拉入 vendor 文件夹。
因此我的问题是:如何强制 dep 拉取 master 分支?
我尝试在我的 Gopkg.toml 文件中添加以下内容:
[[constraint]]
branch = "master"
name = "github.com/chzyer/readline"
很遗憾,这不起作用。当我检查拉入供应商文件夹的版本时,它仍然是 1.4.
如果你试图控制一个瞬态依赖的版本(不是你的包直接使用的,你应该使用 [[override]]
directive
它看起来与约束完全一样,但它会约束依赖项,即使它没有被您的包直接继承。
[[override]]
branch = "master"
name = "github.com/chzyer/readline"
请注意,这在依赖项解决程序发现冲突的依赖项时也很有用,例如你的包 P 使用包 A 和 B,两者都依赖于包 X 的不同版本......你可以在你的包 P
内对包 X 使用覆盖
我正在使用 dep 来管理我正在编写的 Go 工具的依赖项。
此工具使用 https://github.com/desertbit/grumble as an dependency. This in turn uses https://github.com/chzyer/readline 作为依赖项。问题是,当尝试 运行 我的工具时,出现以下错误:
vendor/github.com/desertbit/grumble/app.go:295:20: unknown field 'HistorySearchFold' in struct literal of type readline.Config
我知道为什么会这样。 grumble 使用 master 分支 readline 作为依赖。在此字段 HistorySearchFold
可用。
使用 dep init
/dep ensure
时,不是 master,而是 1.4 标签被拉入 vendor 文件夹。
因此我的问题是:如何强制 dep 拉取 master 分支?
我尝试在我的 Gopkg.toml 文件中添加以下内容:
[[constraint]]
branch = "master"
name = "github.com/chzyer/readline"
很遗憾,这不起作用。当我检查拉入供应商文件夹的版本时,它仍然是 1.4.
如果你试图控制一个瞬态依赖的版本(不是你的包直接使用的,你应该使用 [[override]]
directive
它看起来与约束完全一样,但它会约束依赖项,即使它没有被您的包直接继承。
[[override]]
branch = "master"
name = "github.com/chzyer/readline"
请注意,这在依赖项解决程序发现冲突的依赖项时也很有用,例如你的包 P 使用包 A 和 B,两者都依赖于包 X 的不同版本......你可以在你的包 P
内对包 X 使用覆盖