【问题标题】:How to get sub-dependencies of a dependency added as a git submodule [closed]如何获取添加为 git 子模块的依赖项的子依赖项 [关闭]
【发布时间】:2021-02-02 16:48:47
【问题描述】:

假设我正在开发一个名为 X 的 Go 项目,它依赖于一个 repo Y。 我还没有在我的项目中使用 go mods X

我现在使用以下命令在供应商 pkg 的项目 X 中添加了 Y 作为 git 子模块: git submodule add <URL to Git repo> <Directory in vendor pkg>.

repo Y 对项目有子依赖,比如 ZGopkg.tomlgo.mod 文件中定义。现在,当我将代码放到服务器上并运行以下命令来获取子模块 Y 时,依赖文件 Z 仍然丢失。

我应该怎么做才能使用 Gopkg.tomlgo.mod 文件下载 Z 文件而不显式进入 Y 并下载。

【问题讨论】:

  • "没有明确进入 Y 并下载";你有什么不想这样做的理由吗?
  • @Alex 是的,所以当我使用 Jenkins 作业进行部署时,我不必使用蛮力来使其工作。我应该能够在项目 X 的​​根级别执行命令。
  • “我还没有在我的项目 X 中使用 go mods。”那你就错了而且没有办法帮助你。现在随处使用 Go 模块。
  • "我修改了一个供应商 pkg" 所以你分叉了一个依赖项。然后只需导入该分叉依赖项。或者 replace 与你的 fork 的依赖关系。这是一个 XY 问题。您可以通过艰难的方式来对抗工具,也可以通过简单的方式来使用工具。
  • 使用 Go 模块。他们支持您尝试做的所有事情,而且做得很干净。正如您所尝试的那样,使用不受支持的工具会导致一团糟。

标签: git go dependencies git-submodules go-modules


【解决方案1】:

“我已经修改了一个供应商 pkg,因此无法切换到 go mod”

实际上,您可以在 go.mod 中引用 Y,使用 replace directive

replace example.com/original/import/path => vendor/Y

这样,go mod tidy/go mod download 应该下载Z

【讨论】:

  • 感谢@VonC为此提供解决方案
猜你喜欢
  • 1970-01-01
  • 2016-12-18
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 2019-02-12
  • 2019-12-03
相关资源
最近更新 更多