首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git中的git,由go get -转换为子模块创建。

Git中的git,由go get -转换为子模块创建。
EN

Stack Overflow用户
提问于 2016-04-08 12:08:44
回答 2查看 703关注 0票数 1

我在一个git存储库中有一个go / golang项目的完整src树。这样,我就可以轻松地将一个完整的项目及其依赖项克隆到另一台计算机上。

当使用go get时,例如,github.com,go在我的src-树中克隆github项目。

是否有一种简单/标准的方法将这个内部git转换为子模块?类似于git submodule add <path>的东西

还是必须手动或自动找到内部存储库的url并使用git submodule add <url> <path>

有理由不使用这种方法吗?据我所见,它的优点是我完全控制了源代码的版本控制,轻松地克隆了包括依赖项在内的完整项目,使用go get更新了我所依赖/检索的第三方代码。

结论:,谢谢你,C和VonC。最后,我使用了工具govendor的供应商系统。我喜欢这个工具,因为它的透明性和简单性--它从来不是必需的工具。此外,围棋监控系统满足了我的主要目标-使它容易克隆我的整个项目和它的依赖关系到另一台计算机。

EN

回答 2

Stack Overflow用户

发布于 2016-04-08 12:39:12

为了维护目的,您描述的方法似乎会引起更多的麻烦。想象一下,每当进行更改时,必须记住执行git submodule update,然后出现向后兼容性问题。

相反,我建议将戈德普看作一个依赖工具。此外,在Go 1.5+中,他们已经在尝试使用vendor文件夹来管理依赖关系,您可以找到更多关于这里的信息。

从高级别来看,在Godep版本控制方面存在一些细微差别,但它允许您通过其SHA有效地签出特定的提交。SHA是由位于GOPATH中的实际依赖项中的提交决定的。这实际上还包括您提到的优点,例如有一个具有依赖项及其依赖项的中心位置目录,并且能够控制您想要使用的依赖项的版本。尝试在git submodule中管理它,它带来的麻烦要少得多。

票数 2
EN

Stack Overflow用户

发布于 2016-04-08 12:52:04

我完全同意威尔C回答,但为了防止您仍然希望将github作为子模块(在供应商子文件夹中)引用,下面是我编写的一个脚本,用于快速完成此操作:

它将:

  • go getvendor/src中的github回购(通过将GOPATH暂时重置为供应商)
  • 标识go get导入的所有repos (意思是github及其依赖项),go list -f
  • 将这些repos作为主回购的子模块添加到供应商子文件夹中。
  • 清除(rm)的vendor/src文件夹,它只是为了获取repos。

vendor.bat

用法:

代码语言:javascript
复制
cd /path/to/your/repo
vendor github.com/jroimartin/gocui

这将产生:

代码语言:javascript
复制
 /path/to/your/repo/vendor/github.com/jroimartin/gocui
 /path/to/your/repo/vendor/github.com/<other/dependent/repos>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36499180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档