使用 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 使用覆盖