gpt4 book ai didi

Git repo inside git repo, 由 go get 创建 - convert to submodule

转载 作者:IT王子 更新时间:2023-10-29 01:58:56 24 4
gpt4 key购买 nike

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

当使用 go get 从例如 github.com 时,go 将 github 项目克隆到我的 src-tree 中。

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

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

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

结论谢谢 Will C 和 VonC。我最终使用了带有工具 govendor 的 vendor 系统。我喜欢这个工具,因为它的透明性和简单性——它从来都不是必需的工具。此外,Go vendor 系统满足了我的主要目标 - 可以轻松地将我的完整项目及其依赖项克隆到另一台计算机。

最佳答案

您描述的方法似乎会导致更多的维护问题。想象一下,每当进行更改并且必须记住执行 git submodule update 然后遇到向后兼容性问题时。

相反,我建议您查看 Godep作为依赖工具。此外,在 Go 1.5+ 中,他们已经在尝试使用 vendor 文件夹来管理依赖项,您可以在其中找到有关 here 的更多信息。 .

从高层次上看,使用 Godep 进行版本控制存在一些细微差别,但它允许您通过其 SHA 在特定提交时有效地 checkout 。 SHA 由您在位于 GOPATH 中的实际依赖项中进行的提交决定。这实际上还包括您提到的优势,例如拥有一个包含依赖项及其依赖项的中央目录,以及能够控制您要使用的依赖项的版本。尝试在 git submodule 中管理它的麻烦要少得多。

关于Git repo inside git repo, 由 go get 创建 - convert to submodule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36499180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com