1

我想模仿 svn:externals 之类的行为:我有一个主项目,并且在另一个存储库中有一些“通用”代码。使用 SVN 我会这样做:

svn co <url>/src common

我的文件夹结构是:

repo/common/*.cpp

现在使用 git + submodule + sparse checkout 这要复杂得多,当我添加子模块时,我有一个额外的子目录层;

git submodule add <url> common

现在我的文件夹结构是:

repo/common/src/*.cpp
repo/common/lib/...

通过稀疏结帐,我可以确保只签出 src 文件夹,但与 svn:externals 解决方案相比,我仍然多一层(src):

repo/common/src/*.cpp

通用代码有更好的解决方案吗?或者有什么方法可以清理它?我知道一切都会好起来的;就是不太干净。。。

4

1 回答 1

1

您无法避免子模块中的额外文件夹,但您可以添加符号链接(即使在 Windows 上)以找到您想要的内容。

添加您的子模块及其存储库名称:

git submodule add -b master /url/of/repo

添加符号链接:

ln -s repo/src common

-b master如果您希望您的存储库跟随其master分支,请不要忘记添加“ ”。
从 git 1.8.2 开始这是可能的:请参阅“ git submoduletracking latest ”。


即使是Git 2.25 及其git sparse-checkout命令也不会避免额外的文件夹级别“ common”。

于 2014-01-24T16:38:10.403 回答