一个git子模块是否可以由其他几个git子模块组成,而超级git可以为每个子模块获取内容?
作者假设git子模块层次结构如下:
这个问题是关于在子模块中嵌套子模块的可能性:
.gitmodules的实际示例应该如下所示:
[submodule "Source/V8"]
path = Source/V8
url = https://chromium.googlesource.com/v8/v8.git
[submodule "Source/V8/build/gyp"]
path = Source/V8/build/gyp
url = https://chromium.googlesource.com/external/gyp
[submodule "Source/V8/third_party/cygwin"]
path = Source/V8/third_party/cygwin
url = https://chromium.googlesource.com/chromium/deps/cygwin
[submodule "Source/V8/third_party/python_26"]
path = Source/V8/third_party/python_26
url = https://chromium.googlesource.com/chromium/deps/python_26
[submodule "Source/V8/third_party/icu"]
path = Source/V8/third_party/icu
url = https://chromium.googlesource.com/chromium/deps/icu52
[submodule "Source/V8/testing/gtest"]
path = Source/V8/testing/gtest
url = https://chromium.googlesource.com/chromium/testing/gtest
[submodule "Source/V8/testing/gmock"]
path = Source/V8/testing/gmock
url = https://chromium.googlesource.com/chromium/testing/gtest注意,子模块的路径是嵌套的:
我尝试了以下示例,但没有成功:
git submodule add https://chromium.googlesource.com/v8/v8.git
Source/V8
git submodule add https://chromium.googlesource.com/external/gyp
Source/V8/build/gyp 在以下方面的成果:
The following path is ignored by one of your .gitignore files:
Source/V8/build/gyp
Use -f if you really want to add it.使用git子模块将-f结果添加到:
Cloning into 'Source/V8/build/gyp'...
remote: Sending approximately 10.28 MiB ...
remote: Total 16486 (delta 10444), reused 16486 (delta 10444)
Receiving objects: 100% (16486/16486), 10.28 MiB | 2.07 MiB/s, done.
Resolving deltas: 100% (10452/10452), done.
Checking connectivity... done.
fatal: Pathspec 'Source/V8/build/gyp' is in submodule 'Source/V8'
Failed to add submodule 'Source/V8/build/gyp'如果这件事能办到的话,请让我现在就说。
更新:注意:这个问题是关于创建子模块结构,而不是初始化它。
发布于 2022-11-11 20:01:58
简短回答:是的。最后,子模块是一个模块,但在另一个模块中。
这意味着,如果您设置一个父回购,带有一个子模块。您可以进入该子模块并在其中设置另一个模块。这样,父回购将看到您在子模块中有一些更改,但不会看到您在子模块中有另一个子模块。
发布于 2015-01-23 20:57:35
是的,嵌套子模块是可能的,尽管不一定是可取的。如果您确实希望创建嵌套子模块,则必须使用以下命令:
git submodule update --init --recursive事实上,也曾有人问过类似的问题。你应该看看here
发布于 2019-08-22 07:19:33
子模块应该添加到存储库中,而不是添加到子模块。
然后,在顶级存储库中跟踪它们之后,顶层存储库可以作为另一个项目中的子模块使用,从而形成嵌套的子模块结构。
在您的示例中,应该将gyp作为子模块添加到V8项目中。如果您不能影响顶级项目,那么您应该问问自己,在这个项目中添加一个子模块意味着什么?
在构建所需结构时,可以使用@iclman建议的命令,以便将所有子模块包含在:
git submodule update --init --recursive
https://stackoverflow.com/questions/28110097
复制相似问题