一次添加多个Git子模块的最简单方法?

Easiest way to add multiple Git submodules at once?

我有一组Git子模块要包含在多个项目中。我用的是TortoiseGit,一个接一个地添加到每个新项目中是不方便的。

例如,在Tortoissesvn中,可以简单地将svn:externals导出到一个文件,然后将该文件应用到一个新项目。我在找类似的东西(如果可能的话,我宁愿避免编写脚本)。

在这种情况下,我的最佳选择是什么?


基本上,tortoisegit添加子模块对话框只是git submodule add的GUI前端,它基本上只是工作树根中文件.gitmodules的包装器。

也就是说,您可以考虑自动调用git submodule add,或者直接手工编写.gitmodules(或从另一个存储库复制),然后需要注册子模块(这不能使用tortoisegit ATM完成):

1
2
3
4
5
6
7
git config -f .gitmodules --get-regexp '^submodule\..*\.path$' |
    while read path_key path
    do
        url_key=$(echo $path_key | sed 's/\.path/.url/')
        url=$(git config -f .gitmodules --get"$url_key")
        git submodule add $url $path
done

依据:https://gist.github.com/aromen/5027030