我有一个很长的回购列表,我试图通过将它们作为所有子模块制作成一个父回购。
我已尝试手动将它们添加到.gitmodules
,也尝试添加到.git/config
,但它似乎无效。
我也尝试过运行git submodule sync
和git submodule update --init
等,但没有运气。
有没有办法欺骗git认为我的项目有所有(~30K)子模块,而不需要实际克隆它们?
答案 0 :(得分:8)
在互联网上长之后,我发现你可以通过直接在git索引中编写并创建“gitlink”文件类型来实现你想要的。
paper-ripple
另外不要忘记在git update-index [--add] --cacheinfo 160000 <subrepo commit hash> <submod path>
中写下子信息(主要是声明外部路径)。
答案 1 :(得分:0)
有没有办法欺骗git认为我的项目有所有(~30K)子模块,而不需要实际克隆它们?
<强> ??? ~30K子模块?
你试图克隆所有github存储库吗?
在一个项目中拥有如此多的子模块是没有意义的。
有没有办法欺骗git认为我的项目有它的全部
不,这是子模块用于包含第三方(也可能是你自己的)依赖项的内容,它将在自己的存储库中进行管理。
正如您在图像中看到的,子模块只是项目中的子项目。你问的是,如果有机会告诉git我有这个项目,而我们根本就没有它。
无法完成。
答案 2 :(得分:0)
只需使用git add
。
git submodule
命令可以帮助纠缠嵌套的存储库。
有些人更喜欢简单的抽象,这些抽象决定并限制了任意复杂的具体实现所能做的事情。
Git倾向于简单的实现,可以做出无限的,任意的事情,将抽象降级为他们作为助手的适当角色,谈论可能的方式。试图将所有你能用快照做的事情融入到vcs抽象的blinkered straitjacket中是疯狂的。子模块只是一个dag参考。 “把这个dag的尖端放在这里”。 submodule命令只是帮助你搜索dag的源代码的工具,并保护它免受你每天对你的过度工作的文件系统做的所有暴力事件。