简体   繁体   中英

Force a specific version for a dependency when using dep

I am using dep to manage the dependencies of a Go tool I'm writing.

This tool uses https://github.com/desertbit/grumble as an dependency. This in turn uses https://github.com/chzyer/readline as a dependency. The problem is that when trying to run my tool I get the following error: vendor/github.com/desertbit/grumble/app.go:295:20: unknown field 'HistorySearchFold' in struct literal of type readline.Config

I know why this is happending. grumble uses the master branch of readline as a dependency. In this the field HistorySearchFold is available. When using dep init / dep ensure not the master but the 1.4 tag is pulled into the vendor folder.

My question therefore is: How can I force dep to pull the master branch instead?

I tried adding the following in my Gopkg.toml file:

[[constraint]]
  branch = "master"
  name = "github.com/chzyer/readline"

Sadly this is not working. When I check the version pulled into the vendor folder it is still 1.4 .

If you are trying to control the version of a transient dependency (not one directly used by your package, you should use the [[override]] directive

It looks exactly the same as a constraint, but it will constrain dependencies even when not directly inherited by your package.

[[override]]
  branch = "master"
  name = "github.com/chzyer/readline"

Note that this is also useful for when the dependency solver finds conflicting dependencies, eg your package P makes use of packages A and B, and both depend on different versions of package X... you can use an override on package X inside of your package P

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM