我想模仿svn:externals这样的行为:我有一个主项目,我在另一个存储库中有一些“常用”代码。使用SVN,我会这样做:
svn co <url>/src common
我的文件夹结构是:
repo/common/*.cpp
现在使用git +子模块+稀疏检出这更加复杂,当我添加子模块时,我有一个额外的子目录层;
git submodule add <url> common
现在我的文件夹结构是:
repo/common/src/*.cpp
repo/common/lib/...
使用稀疏结账我可以确保只检查src文件夹,但是我还有一个与svn:externals解决方案相比的更多层(src):
repo/common/src/*.cpp
对于通用代码有更好的解决方案吗?还是一种清理方法?我知道一切都会奏效;它不是那么干净......
答案 0 :(得分:1)
您无法避免子模块中的额外文件夹,但您可以添加符号链接(即使在Windows上),以便找到您想要的内容。
添加子模块及其repo名称:
git submodule add -b master /url/of/repo
添加符号链接:
ln -s repo/src common
如果您希望您的回购符合其-b master
分支,请不要忘记添加“master
”。
这是可能的,因为git 1.8.2:见“git submodule
tracking latest”。