使用 golang dep 来自相同 github 源的不同包版本

different package versions from same github source using golang dep

我正在尝试将项目从 govendor 转换为 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 能否处理来自同一个 "name" 的不同修订版的软件包?如果是这样,我们会永远被 govendor 困住吗?这会让我个人不开心,因为 govendor 是......呃......具有挑战性......(这可能是我们如何进入这个糟糕的地方)

在此先感谢您的帮助!

So the question is, can dep handle having packages from the same "name" with different revisions?

没有