【发布时间】:2013-06-24 12:04:30
【问题描述】:
如何使用特定导入的版本标签一次获取 Go 包的所有依赖项?
假设我的 go 树中有多个包:
src/
foo/
bar/ (go code in package bar)
x.go
quux/ (go code in package main)
y.go
现在让包 `bar' 依赖于使用标签版本的第三方库
(即通常通过以下方式获取:go get -tags mylib_2.0 github.com/user/mylib)
我要做的是在导入行上指定一个标签 以便 go get ./... 在我的树上获得正确的版本方案。比如:
import "github.com/user/mylib" `tags=mylib_2.0`
【问题讨论】:
-
Re: “我想做的是在导入行上指定一个标签,以便 go get ./... 在我的树上获得正确的版本方案。”这通常是不可能的。而且它并不特定于 Go。
-
那么我应该如何处理这种情况? (说它是一个自动构建系统)有什么解决方法吗?
-
如果在一般情况下不可能,那么在一般情况下就没有办法处理它。考虑 a1->b1->d1 和 a1->c1->d2。哪个版本的 d 应该结帐?您不能在同一位置同时签出两个(或多个)不同版本的存储库。但该位置仅取决于导入路径,而不取决于任何版本。
-
好吧 go get 在这种情况下可能会发出错误。如果你这样做,也会出现同样的问题:go get -tags mylib_2.0 github.com/user/mylib 并在其他地方使用 mylib 3.0 调用没有?
标签: dependencies go