我目前正在尝试恢复我们的项目 PPA,因为我们两个月前开始使用 Git 子模块,而导入到 Bazaar 却无法工作,因为它不支持子模块。因此我删除了 bzr,并成功将我们的存储库作为 Git 导入到 Launchpad。
遗憾的是,在我尝试使用新创建的配方构建它之后,构建失败了,因为存储库未递归克隆,并且子模块仍然不存在。我在 Launchpad 自己的文档中找不到任何帮助,虽然它的支持功能称为“嵌套”,但它似乎不是解决递归克隆的好选择。
如何在构建之前递归地让 Launchpad 克隆存储库?
答案1
目前还没有办法做到这一点,但这是一个已知错误应该可以修复。(请随意深入研究git-build-recipe 源如果您很着急,可以提出解决方案。)
解决方法
然而,解决方法。首先,导入Launchpad里的所有子模块(可以使用不同的项目,也可以使用同一个项目中的不同git仓库)。
一个例子
例如,这里源包配方是标记. 标记需要子模块scidown
,哪个需要charter
,哪个需要tinyexpr
。
首先,我在 Launchpad 上注册了这些项目,并将 GitHub 存储库镜像到lp:scidown
、lp:charter
和lp: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 使用master
lp:marker 的分支。
第三行将 lp:scidown 的全部内容(在提交中a7b7f063de4f272ef0ec12d00b98470888e8cb32
)复制到src/scidown
Marker 存储库中。
第四行将 lp:charter (提交的a25dee1214ea9ba5882325066555cb813efbb489
)的全部内容复制到src/scidown/src/charter
Marker 存储库中(charter 是构建 scidown 所需的子模块)。
第三行将 lp:tinyexpr (提交的9476568b69de4c384903f1d5f255907b92592f45
)的全部内容复制到src/scidown/src/charter/src/tinyexpr
Marker 存储库中(tinyexpr 是构建章程所需的子模块)。