douwanc63652 2018-01-20 20:47
浏览 286
已采纳

使用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.

  • 写回答

1条回答 默认 最新

  • dpn4073 2018-01-21 07:52
    关注

    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, e.g. 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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器