我有一个应用程序配方,可以从 Git 存储库获取源代码。应用程序的存储库包含子模块。要获取带有子模块的源代码,我使用下面的
SRC_URI
。注意 gitsm
而不是 git
,参见。
SRC_URI += "gitsm://<repo address>;protocol=ssh;branch=development"
当我编译这个食谱时,出现以下警告。
WARNING: <recipe name>-1.0+gitAUTOINC+60c254fbd3-r0
do_fetch: Submodule included by gitsm://<repo address>;protocol=ssh;branch=development refers to relative ssh reference <submodule address>.
References may fail if not absolute
如何抑制此警告?
附加信息:
检查
.gitmodules
存储库中的 <repo address>
文件。它可能看起来像这样:
[submodule "<submodule>"]
path = path/to/submodule
url = <submodule address>
如果子模块托管在与主存储库相同的位置(例如
github.com/username/repo
和 github.com/username/submodule
),您可以使用相对子模块 URL,这将删除警告。它看起来像
[submodule "<submodule>"]
path = path/to/submodule
url = ../submodule
如果您的子模块托管在其他地方(例如
github.com/username/repo
和 github.com/otheruser/submodule
或 gitlab.com/someotheruser/submodule
),那么您将无法使用绝对 URL,从而导致这些 bitbake 警告。
是新子模块的原始存储库的 URL。这可以是绝对 URL,或者(如果以 ./ 或 ../ 开头)相对于超级项目的默认远程存储库的位置(请注意,要指定位于紧邻的存储库 foo.git)一个超级项目 bar.git,你必须使用<repository>
而不是../foo.git
- 正如人们在遵循相对 URL 规则时可能期望的那样 - 因为Git 中相对 URL 的评估与相对目录的评估相同)。./foo.git
相对子模块路径很棒!它允许开发人员在克隆主存储库时选择他们的传输(ssh、https),并且他们选择的传输也将由子模块继承。