在使用Git-submodule-sparse签出时,是否可能没有额外的子目录?
我想模仿svn:externals这样的行为:我有一个主项目,在另一个存储库中有一些“通用”代码。有了SVN,我会:在使用Git-submodule-sparse签出时,是否可能没有额外的子目录?,git,svn,git-submodules,svn-externals,sparse-checkout,Git,Svn,Git Submodules,Svn Externals,Sparse Checkout,我想模仿svn:externals这样的行为:我有一个主项目,在另一个存储库中有一些“通用”代码。有了SVN,我会: svn co <url>/src common 现在使用git+子模块+稀疏签出,这要复杂得多,当我添加子模块时,我有一个额外的子目录层 git submodule add <url> common 使用稀疏签出,我可以确保只签出src文件夹,但与svn:externals解决方案相比,我还有一个层(src): repo/common/src/*.cp
svn co <url>/src common
现在使用git+子模块+稀疏签出,这要复杂得多,当我添加子模块时,我有一个额外的子目录层
git submodule add <url> common
使用稀疏签出,我可以确保只签出src文件夹,但与svn:externals解决方案相比,我还有一个层(src):
repo/common/src/*.cpp
是否有更好的通用代码解决方案?还是一种清理的方法?我知道一切都会好起来的;它不是那么干净…您无法避免子模块中的额外文件夹,但您可以添加一个符号链接(即使在Windows上)以查找所需的内容 添加子模块及其repo名称:
git submodule add -b master /url/of/repo
添加符号链接:
ln -s repo/src common
如果您希望回购遵循其master
分支,请不要忘记添加“-b master
”。这是可能的,因为git 1.8.2:请参阅“”
即使是文件夹也无法避免额外的文件夹级别“
common
”Wow感谢您对“-b master”选项的提示!我将进一步检查…@ChrisMaes是的,这是一个与子模块关联的本地配置。任何git子模块更新--remote
都会在获取子模块上游分支后更新子模块的内容。考虑到最近对子模块和稀疏签出的更改,这个答案仍然正确吗?@eggyal是的。我在中介绍了git2.25gitsparsecheckout
new命令。但是在OP的上下文中,对于您要使用的任何子模块,您仍然有一个中间文件夹级别。好的,谢谢。在我的例子中,我有一个子模块,它只涉及整个回购协议的一小部分,而不是仅仅想要避免一个中间文件夹,但我想工作集现在必须包括完整的子模块。
git submodule add -b master /url/of/repo
ln -s repo/src common