如何从git中的另外4个repos自动下载相同的8个repos?

时间:2016-11-25 00:54:19

标签: git repository git-submodules git-subtree

我们有4个带有可执行文件的repos,当我克隆其中任何一个时,我想将所有带有库的8个repos克隆到可执行文件夹旁边的文件夹中。可执行文件类似于服务,其中所有4个都将使用库的主存储库中的最新版本。当我克隆其中任何一个时,我也想要克隆所有8个库repos。

So I can for example 
clone executable1 and have folders: 
executable1-library1-..-library8
or clone library1 and have folders: 
library1-..-library8
or end up cloning all of the executables and have folders: 
executable1-..-executable4-library1-..-library8. 

因此我不想每次都下载所有可执行文件,但我想每次都下载所有库。

我一直在考虑子模块,但是他们的文档很糟糕,也许整个功能很差,我不知道。然后我一直在考虑git中的子树和其他结构。还有可能我总是手动分别克隆所有8个库,这很可悲。

So what is the best way to 
1) automatically download all of the 8 libraries to their folders (next to the folder of the executable if it was caused by cloning executable)?
2) automatically download all of the 8 libraries to their folders next to the folder of the executable during the cloning of the executable?

第一个选项更基本 - 让它分两步完成(1.executable + 2.libraries),第二个选项对我来说更好,只需要一步完成(可执行文件和库一起完成)。

我的部分问题在此解决:Git: Possible to use same submodule working copy by multiple projects?

即使它们与可执行文件一起下载并将这些更改推送到其存储库,我也希望对库进行更改。

编辑:我添加了最后一句,并补充说1库也应该下载其他库。

1 个答案:

答案 0 :(得分:1)

您仍然可以使用子模块和register them (in each repo) to follow their own master branch

git submodule add -b master -- /url/library1

然后一个简单的git clone --recursive就足以获得所有子模块内容 git submodule update --remote将确保它们反映其最新的主分支状态。