使用golang dep从同一github源获得不同的包版本

使用golang dep从同一github源获得不同的包版本,go,golang-migrate,Go,Golang Migrate,我正在尝试将一个项目从Govendo转换为dep。然而,我发现dep中有一个限制使得这不可能。在govendor中的vendor.json文件中,我可以让来自同一个源的不同包具有不同的修订哈希。比如说: { "checksumSHA1": "iYT7abLMy0Vfyy8nwoDZYirLrI4=", "path": "github.com/docker/docker/api/types", "revision": "deed26f7f0f9a9d279b8ac99389

我正在尝试将一个项目从Govendo转换为dep。然而,我发现dep中有一个限制使得这不可能。在govendor中的vendor.json文件中,我可以让来自同一个源的不同包具有不同的修订哈希。比如说:

{
    "checksumSHA1": "iYT7abLMy0Vfyy8nwoDZYirLrI4=",
    "path": "github.com/docker/docker/api/types",
    "revision": "deed26f7f0f9a9d279b8ac99389f204d9063d1a4",
    "revisionTime": "2018-03-29T10:06:29Z"
},
{
    "checksumSHA1": "jVJDbe0IcyjoKc2xbohwzQr+FF0=",
    "path": "github.com/docker/docker/api/types/blkiodev",
    "revision": "88c0317e23449d6ff730a1073f240586cbdfd4ba",
    "revisionTime": "2017-08-23T07:13:08Z"
},
但是,当我使用dep init解决此问题时,最终的.lock文件似乎选择了最新版本:

[[projects]]
digest = "1:3101683c3a63814ac8fe12a61fa01b728340f647c484d71573a31f041a68e7bc"
name = "github.com/docker/docker"
packages = [
    "api/types",
    "api/types/blkiodev",
]
pruneopts = "UT"
revision = "deed26f7f0f9a9d279b8ac99389f204d9063d1a4"
不幸的是,让github.com/docker/docker下的每个包都处于同一版本对我们根本不起作用。试图将它们全部修改为一个版本会导致对其他可传递包的一系列修改,这是我们目前无法容忍的。(这个例子被删减了,我们在github.com/docker/docker下有很多包,这些包被分成三到四个不同的版本)

所以问题是,dep能处理来自同一个“名称”的不同版本的包吗?如果是这样的话,我们是否永远与戈文多在一起?那会让我个人不高兴,因为戈文多。。。UH具有挑战性的(这可能是我们进入这个糟糕的地方的原因)

提前感谢所有的帮助

所以问题是,dep能处理来自同一个“名称”的不同版本的包吗


不可以。

在同一个库中拥有不同版本的不同软件包充其量也是危险的。docker是否真的为这种用法提供了兼容性保证?这似乎是我将竭尽全力避免的事情,至少在go 1.11中确定模块支持之前是这样。请告诉我。对我来说,这简直是令人作呕。但这就是我的处境。我不能移动到dep,因为这个限制,因为当我尝试所有的地狱打破了当我们使用相同的软件包修订的一切,所以。。。因此,我们一直坚持使用Govendo,直到我们的方案达成一致?接下来的问题是,新的依赖系统(vgo:)是否能够处理这种情况?Go 1.11将允许在一个版本中有一个包的多个主要(!!)版本。