如何更新配置为 head 修订的 git 子项目?

How to update git subproject that is configured to head revision?

在 Meson 中,可以使用 wrap-files 定义子项目。 manual 显示了 wrap-git 文件的示例:

[wrap-git]
url = https://github.com/libfoobar/libfoobar.git
revision = head

我已经建立了一个本地测试项目,它建立了一个像上面的例子一样的子项目。一切正常,Meson 拉入子项目的存储库,构建它,并将其与测试项目可执行文件链接。

然而,当我将新更改推送到子项目存储库时,Meson 无法自动提取这些更改,即使在 wrap-file 中指定了 revision = head。需要说明的是,我真的没想到这会奏效。

有效的方法是手动删除子项目的源代码,然后让 Meson 重新配置项目。这会克隆子项目存储库,从而引入更新。但遗憾的是这是手动操作...

我的问题: 在子项目的 git 包装文件中跟踪 head 修订时,如何自动提取更新?

这是预期的行为。根据 reference doc:

Once a subproject has been fetched, Meson will not update it automatically. For example if the wrap file tracks a git branch, it won't pull latest commits.

To pull latest version of all your subprojects at once, just run the command:

$ meson subprojects update

如果只需要selected,在command后面加名字:

$ meson subprojects update libfoo libbar

(简而言之,更多细节在link)