1

git submodules 可以将多个存储库作为子模块检出到各自的路径中,例如:

% 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客户端的同一目标目录中。我可以通过让用户在克隆后手动运行脚本来做到这一点(不可能让 git 跟踪单个文件),但似乎应该有一种更简洁的方法来做到这一点——为每个子模块手动创建一个符号链接工作量很大,似乎子模块抽象应该能够处理这个问题。

也许我的问题是伪装的?

4

1 回答 1

1

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

newParentRepo/
  1/
  2/
  3/
  ...

该父 repo 可以被克隆 --recursive in ./somepath,并且子模块将直接位于./somepath(在它们各自的根目录1/2/,...)。

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

于 2013-02-26T07:58:10.860 回答