有没有办法让`git submodule add`一个repo *而不用*克隆它?

时间:2016-01-02 03:34:27

标签: git git-submodules

我有一个很长的回购列表,我试图通过将它们作为所有子模块制作成一个父回购。

我已尝试手动将它们添加到.gitmodules,也尝试添加到.git/config,但它似乎无效。

我也尝试过运行git submodule syncgit submodule update --init等,但没有运气。

有没有办法欺骗git认为我的项目有所有(~30K)子模块,而不需要实际克隆它们?

3 个答案:

答案 0 :(得分:8)

在互联网上之后,我发现你可以通过直接在git索引中编写并创建“gitlink”文件类型来实现你想要的。

paper-ripple

另外不要忘记在git update-index [--add] --cacheinfo 160000 <subrepo commit hash> <submod path> 中写下子信息(主要是声明外部路径)。

答案 1 :(得分:0)

  

有没有办法欺骗git认为我的项目有所有(~30K)子模块,而不需要实际克隆它们?

<强> ??? ~30K子模块?
你试图克隆所有github存储库吗?

在一个项目中拥有如此多的子模块是没有意义的。

  

有没有办法欺骗git认为我的项目有它的全部

不,这是子模块用于包含第三方(也可能是你自己的)依赖项的内容,它将在自己的存储库中进行管理。

enter image description here

正如您在图像中看到的,子模块只是项目中的子项目。你问的是,如果有机会告诉git我有这个项目,而我们根本就没有它。

无法完成。

答案 2 :(得分:0)

只需使用git add

git submodule命令可以帮助纠缠嵌套的存储库。

有些人更喜欢简单的抽象,这些抽象决定并限制了任意复杂的具体实现所能做的事情。

Git倾向于简单的实现,可以做出无限的,任意的事情,将抽象降级为他们作为助手的适当角色,谈论可能的方式。试图将所有你能用快照做的事情融入到vcs抽象的blinkered straitjacket中是疯狂的。子模块只是一个dag参考。 “把这个dag的尖端放在这里”。 submodule命令只是帮助你搜索dag的源代码的工具,并保护它免受你每天对你的过度工作的文件系统做的所有暴力事件。

相关问题