`go install`,`govendor install + local`和`govendor install + vendor,^ program`有什么区别?

时间:2017-07-10 09:55:03

标签: go govendor

使用govendor时,go installgovendor install +localgovendor install +vendor,^program之间有什么区别?

govendor install +vendor,^program表示构建并安装我的所有供应商软件包。但它安装到什么地方和哪里?它会将我的项目和供应商的命令可执行文件安装到$GOPATH/bin,将我的项目和供应商的包对象安装到$GOPATH/pkg吗?

govendor install +local表示只在您的存储库中构建所有内容。那真正意味着什么呢?它会创建vendor/binvendor/pkg吗?

如果我在项目中运行go install怎么办?这与上述两个命令有什么不同?

1 个答案:

答案 0 :(得分:0)

Go首先进入世界,为依赖管理和工作区文件夹结构提出了全新的想法。有一个严格的层次结构,项目位于MATCH (m:Column {name: {rpt_id} }), (n:Column {name: {country_code} }), p = shortestPath((m)-[:PART_OF*..4]-(n)) RETURN p ),其他项目只是导入所有其他项目的最新版本。这样做的问题是,如果某个上游项目更改了API,那么您的项目将无法解决。这就是供应商的用武之地。

供应商是项目中的子目录,其中包含项目导入的$gopath/src/site.com/user/project下的所有内容。不同之处在于,当上游项目引入新功能和/或修复时,供应商不会更新。因此,您必须自己更新。当go查找导入时(从最新版本开始),它将首先检查供应商,然后在$gopath/src中查找最新版本,防止构建因莫名其妙地破坏而无明显原因。

$gopath将您的go install依赖项更新为最新版本;所有新项目和没有供应商的项目都将使用的版本。

$gopath更新您的特定项目供应商依赖项。这应该在单独的提交中完成;您应govendor install +vendor,^program,以便检查更新是否会破坏您的项目。

go test; govendor; git commit; go test显然只是构建项目。

另外,你应该恕我直言使用godep而不是govendor。 IHMO有更好的工作流程;您的govendor install +local拥有最新版本,然后您可以使用$gopath更新项目。它也应该是golang 1.10中的标准。