Git:将子模块文件签出到一个目录中

时间:2013-02-26 04:09:22

标签: git-submodules

git子模块可以将多个存储库签出为相应路径的子模块,例如:

% git submodule add git@.../repo1.git ./here/is/1
% git submodule add git@.../repo2.git ./here/is/2

但是,如果我需要将repo1repo2的内容检出到单个路径./here/is/3,该怎么办?

基本上我有一个公尺大小的子模块存储库当用户执行git clone --recursive ...

时,我需要在客户端检查到一个非常严格的目录层次结构

我希望将所有子模块的内容签出到./somepath。可以吗?

我考虑的一件事是使用符号链接,但这感觉不对。

修改

我希望上面的12的内容放在客户端的同一目标目录中。我可以通过让用户在克隆(it is not possible to have git track a single file)后手动运行脚本来做到这一点,但似乎应该有一个更简洁的方法来执行此操作 - 为每个子模块手动创建符号链接是很多工作,似乎子模块抽象应该能够处理这个问题。

也许我的问题是伪装的伪装?

1 个答案:

答案 0 :(得分:1)

一种方法是创建另一个父回购,子模块直接在其中声明:

newParentRepo/
  1/
  2/
  3/
  ...

可以克隆父回复 - 在./somepath中递归,子模块将直接在./somepath下(在各自的根目录1/2/中。 ..)。

您需要将第一个父repo记录的子模块的SHA1同步到第二个父repo中,以便所述第二个repo记录正确的子模块列表SHA1。