git子模块可以将多个存储库签出为相应路径的子模块,例如:
% git submodule add git@.../repo1.git ./here/is/1
% git submodule add git@.../repo2.git ./here/is/2
但是,如果我需要将repo1
和repo2
的内容检出到单个路径./here/is/3
,该怎么办?
基本上我有一个公尺大小的子模块存储库当用户执行git clone --recursive ...
我希望将所有子模块的内容签出到./somepath
。可以吗?
我考虑的一件事是使用符号链接,但这感觉不对。
修改
我希望上面的1
和2
的内容放在客户端的同一目标目录中。我可以通过让用户在克隆(it is not possible to have git track a single file)后手动运行脚本来做到这一点,但似乎应该有一个更简洁的方法来执行此操作 - 为每个子模块手动创建符号链接是很多工作,似乎子模块抽象应该能够处理这个问题。
也许我的问题是伪装的伪装?
答案 0 :(得分:1)
一种方法是创建另一个父回购,子模块直接在其中声明:
newParentRepo/
1/
2/
3/
...
可以克隆父回复 - 在./somepath
中递归,子模块将直接在./somepath
下(在各自的根目录1/
,2/
中。 ..)。
您需要将第一个父repo记录的子模块的SHA1同步到第二个父repo中,以便所述第二个repo记录正确的子模块列表SHA1。