选择性地初始化/更新git子模块

选择性地初始化/更新git子模块,git,dependency-management,git-submodules,git-clone,Git,Dependency Management,Git Submodules,Git Clone,我正在开发一个RESTful框架,可以选择构建HTTP和/或HTTPS支持。当前仅限HTTP的生成说明如下所示: git clone --recursive https://github.com/corvusoft/restbed.git mkdir restbed/build cd restbed/build cmake [-DBUILD_TESTS=YES] [-DBUILD_EXAMPLES=YES] [-DCMAKE_INSTALL_PREFIX=/output-directory] .

我正在开发一个RESTful框架,可以选择构建HTTP和/或HTTPS支持。当前仅限HTTP的生成说明如下所示:

git clone --recursive https://github.com/corvusoft/restbed.git
mkdir restbed/build
cd restbed/build
cmake [-DBUILD_TESTS=YES] [-DBUILD_EXAMPLES=YES] [-DCMAKE_INSTALL_PREFIX=/output-directory] ..
make install
make test
我很想使用最新的HTTPS功能,但我希望能够在克隆过程中选择某些依赖项(git子模块),以帮助减少网络流量

HTTP和HTTPS示例下拉所有依赖项

git clone --recursive  https://github.com/corvusoft/restbed.git
mkdir restbed/build
cd restbed/build
cmake [-DBUILD_TESTS=YES] [-DBUILD_EXAMPLES=YES] [-DCMAKE_INSTALL_PREFIX=/output-directory] ..
make install
make test
git clone --recursive="asio, framework" https://github.com/corvusoft/restbed.git
mkdir restbed/build
cd restbed/build
cmake -DBUILD_SSL=NO [-DBUILD_TESTS=YES] [-DBUILD_EXAMPLES=YES] [-DCMAKE_INSTALL_PREFIX=/output-directory] ..
make install
make test
HTTP只是一个下拉特定依赖项的示例

git clone --recursive  https://github.com/corvusoft/restbed.git
mkdir restbed/build
cd restbed/build
cmake [-DBUILD_TESTS=YES] [-DBUILD_EXAMPLES=YES] [-DCMAKE_INSTALL_PREFIX=/output-directory] ..
make install
make test
git clone --recursive="asio, framework" https://github.com/corvusoft/restbed.git
mkdir restbed/build
cd restbed/build
cmake -DBUILD_SSL=NO [-DBUILD_TESTS=YES] [-DBUILD_EXAMPLES=YES] [-DCMAKE_INSTALL_PREFIX=/output-directory] ..
make install
make test
git似乎缺少这种功能

--递归的 --递归子模块创建克隆后,使用其默认设置初始化其中的所有子模块。这相当于 在 克隆完成了。如果克隆的存储库 没有工作树/签出(即如果有--no checkout/-n, --裸的,或——提供了镜像)


如文档所述,将
--recursive
选项与
git clone
一起使用将初始化所有子模块。您可以运行以下命令,直接使用
git submodule
来初始化HTTP情况下所需的子模块:

git clone https://github.com/corvusoft/restbed.git
git submodule update --init --recursive dependency/asio
git submodule update --init --recursive dependency/framework    
mkdir restbed/build
cd restbed/build
cmake -DBUILD_SSL=NO [-DBUILD_TESTS=YES] [-DBUILD_EXAMPLES=YES] [-DCMAKE_INSTALL_PREFIX=/output-directory] ..
make install
make test