是否有可能在使用Git时没有额外的子目录 - 子模块 - 稀疏结账?

时间:2014-01-24 16:21:45

标签: git svn git-submodules svn-externals sparse-checkout

我想模仿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

对于通用代码有更好的解决方案吗?还是一种清理方法?我知道一切都会奏效;它不是那么干净......

1 个答案:

答案 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”。