如何克隆多个特定子模块?

问题描述 投票:2回答:1

我需要编写一个脚本来克隆Boost library,但不幸的是存储库非常大,之后我只需要使用一些子模块。我想将它们存储在一个像这样的字符串变量中

MODULES="tools/build libs/system"

然后将变量传递给一个这样的命令

git clone --recurse-submodules=${MODULES} https://github.com/boostorg/boost.git

问题是,在将多个参数传递给--recurse-submodules之后,所有这些都被忽略了。

我看了How to only update specific git submodules?,但答案只包括克隆一个子模块或多次重复--recurse-submodules,我不喜欢,因为我想让脚本为任意数量的子模块做好准备。

有没有办法如何用Git实现这一目标?

bash git git-submodules
1个回答
0
投票

你的想法是正确的,但不要使用变量,使用数组并以这种方式构建子模块。

modules=()
for mod in "tools/build" "libs/system"; do
    modules+=( --recurse-submodules="$mod" )
done

for循环中添加所有模块名称,以便每次迭代在其之前添加必需的字段并生成完整的子模块数组。现在将它传递给git clone作为modules的引用数组扩展

git clone "${modules[@]}" https://github.com/boostorg/boost.git

"${modules[@]}"扩展为上面步骤中生成的数组,每个生成的条目由空格字符分隔。

© www.soinside.com 2019 - 2024. All rights reserved.