我试图将子模块放入回购.问题是当我克隆父repo时,子模块文件夹是完全空的.
有没有办法让它git clone parent_repo实际上把数据放在子模块文件夹中?
例如,http://github.com/cwolves/sequelize/tree/master/lib/,nodejs-mysql-native指向在外部git的子模块,但是当我结账的sequelize项目,该文件夹为空.
如果你git clone有--recursive,你也可以得到所有的git子模块.
如果我忘记在克隆时添加这个神奇的旗帜,可能会发生,我现在如何去获取任何子模块?
此外,如何将递归标志设置为将来克隆的默认标志?
我正在一个git存储库(A)中创建一个项目,其中包括另一个git存储库(B),后者又包含第三个git存储库(C).在A中,我通过以下方式添加了B:
git submodule add https://github.com/blt04/sfDoctrine2Plugin.git plugins/sfDoctrine2Plugin
Run Code Online (Sandbox Code Playgroud)
单击此处,您可以看到B引用C的位置:https://github.com/doctrine/doctrine2
在我的git子模块添加后,我的plugins/sfDoctrine2Plugin/lib/vendor/doctrine文件夹(应该包含C)是空的.我尝试git submodule update --recursive按照这个StackOverflow答案做一个,但它仍然没有将文件导入到该路径.我不知道该怎么做.
git子模块是否有可能由其他几个git子模块组成,而超级git repo可以获取每个子模块的内容?
作者假设了一个像这样的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
Run Code Online (Sandbox Code Playgroud)
请注意,子模块的路径是嵌套的:
我目前使用subversion来跟踪我对Emacs的配置更改,并将我的'.emacs.d'目录同步到不同的平台.
许多软件包如Ido,Muse或Org-mode都是Emacs发行版的一部分,它们附带Debian或Carbon Emacs(osx).但是我也使用的其他软件包不属于这些发行版,因此我必须手动将它们添加到我的个人subversion存储库中.
优点是我现在可以在任何我想要工作的地方查看我的整个'.emacs.d'配置.缺点是我必须跟踪这些包的更新,每次有新的更新时我都必须手动更新我自己的存储库.
是否有更好的方法将我自己的配置和包与"社区"的配置和包集成?我意识到github.com被许多人用于这个原因.
我应该更好地使用git而不是subversion来同步和共享我的Emacs配置与社区的配置吗?这是否意味着我应该更好地切换到github.com而不是使用我自己的subversion服务器来更接近其他有关交换和分发的Emacs用户?
我们正在迁移到git.我们有大量的模块构成我们的产品,其中一些模块在产品之间共享.该产品由"瘦"超级存储库(ssh://server/product.git)表示,该存储库仅包含子模块:
[submodule "module1"]
path=module1
url=ssh://server/product/module1.git
[submodule "module2"]
path=module2
url=ssh://server/product/module2.git
...
Run Code Online (Sandbox Code Playgroud)
我可以克隆超级存储库并使用子模块并提交它们,然后将子模块提交到超级存储库.
当我想引入另一层时,问题出现了.有两种基本方案(这可以组合起来制作更复杂的设置,但任何东西都应该是这些的组合):
作为开发人员,我克隆了一个中央存储库并开始工作.然后我想将我的代码提交到我们的持续集成服务器,然后再将我的更改合并到中央存储库.我让CI服务器克隆我的repo.这不起作用,CI服务器将克隆我的超级仓库,然后它将从中央存储库位置克隆子模块(因为它是在.gitmodules中所说的).
作为一个团队,我们希望在sprint结束之前将我们的代码合并到中央存储库之前,我们需要一个集成存储库.出于同样的原因,这失败了.
我尝试为子模块指定相对URL,但这也不起作用,因为当我们将第二层克隆到第三层时,相对URL相对于第二层存储库位置解析,但第二层子模块位置在第二层超级存储库.
我能同时拥有它吗?Git子模块和n层存储库结构?