使用 SCons 初始化和更新 Git 个子模块

Using SCons to initialize and update Git submodules

我们使用 SCons 和 Git 子模块来组织和构建软件堆栈。我们有几个应用程序开发人员使用我们的堆栈在其上构建他们的应用程序。为了最大限度地减少使用我们的堆栈的摩擦,使用 SCons 检查子模块是否已初始化和最新并随后递归更新它们的最巧妙方法是什么?

目的是让 scons 命令完成所有工作。

我目前的做法是:

from subprocess import call
call(["git", "submodule", "update", "--init", "--recursive"])

对所有子模块执行递归更新所需的相关部分。这对于简化默认用例很有用,克隆存储库和 运行 scons

from subprocess import call

AddOption(
'--git',
type    = 'string',
nargs   = 1,
action  = 'store',
help    = 'use --git=no-sub-update to disable the submodule update')

## Update the git submodules
---------------------------------------------------
if GetOption('git') != 'no-sub-update':
    call(["git", "submodule", "update", "--init", "--recursive"])