如何从带有子模块的 git 存储库在 Launchpad 上构建 PPA 包?

如何从带有子模块的 git 存储库在 Launchpad 上构建 PPA 包?

我目前正在尝试恢复我们的项目 PPA,因为我们两个月前开始使用 Git 子模块,而导入到 Bazaar 却无法工作,因为它不支持子模块。因此我删除了 bzr,并成功将我们的存储库作为 Git 导入到 Launchpad。

遗憾的是,在我尝试使用新创建的配方构建它之后,构建失败了,因为存储库未递归克隆,并且子模块仍然不存在。我在 Launchpad 自己的文档中找不到任何帮助,虽然它的支持功能称为“嵌套”,但它似乎不是解决递归克隆的好选择。

如何在构建之前递归地让 Launchpad 克隆存储库?

答案1

目前还没有办法做到这一点,但这是一个已知错误应该可以修复。(请随意深入研究git-build-recipe 源如果您很着急,可以提出解决方案。)


解决方法

然而,解决方法。首先,导入Launchpad里的所有子模块(可以使用不同的项目,也可以使用同一个项目中的不同git仓库)。

一个例子

例如,这里源包配方是标记. 标记需要子模块scidown,哪个需要charter,哪个需要tinyexpr

首先,我在 Launchpad 上注册了这些项目,并将 GitHub 存储库镜像到lp:scidownlp:charterlp:tinyexpr

源配方是,

# git-build-recipe format 0.4 deb-version 2020.04.04-0~{revtime}
lp:marker master
nest scidown lp:scidown src/scidown a7b7f063de4f272ef0ec12d00b98470888e8cb32
nest charter lp:charter src/scidown/src/charter a25dee1214ea9ba5882325066555cb813efbb489
nest tinyexpr lp:tinyexpr src/scidown/src/charter/src/tinyexpr 9476568b69de4c384903f1d5f255907b92592f45

第二行告诉 launchpad 使用masterlp:marker 的分支。

第三行将 lp:scidown 的全部内容(在提交中a7b7f063de4f272ef0ec12d00b98470888e8cb32)复制到src/scidownMarker 存储库中。

第四行将 lp:charter (提交的a25dee1214ea9ba5882325066555cb813efbb489)的全部内容复制到src/scidown/src/charterMarker 存储库中(charter 是构建 scidown 所需的子模块)。

第三行将 lp:tinyexpr (提交的9476568b69de4c384903f1d5f255907b92592f45)的全部内容复制到src/scidown/src/charter/src/tinyexprMarker 存储库中(tinyexpr 是构建章程所需的子模块)。

相关内容