如何使用Git实现以下功能?

时间:2009-02-17 12:18:59

标签: git version-control dvcs

问题陈述

到目前为止,每个人都可以访问整个代码库。现在我需要强制人们只获取他们将要处理的模块的代码,对于其他模块,他们将获得lib中的库。假设我们现在有两个模块

thinkbot(HEAD)

- > assemblebot(tree / subdir)

 -> include

 -> source

 -> lib

 -> obj

- > vpl(tree / subdir)

 -> include

 -> source

 -> lib

 -> obj

- >包括

- >资源    - > bin`

现在,如果某人正在使用vpl模块,他将获得包含代码的include和source文件夹,并且他将从assemblebot模块获得一个lib。因此,当他做出改变并从HEAD编译时,事情会从他身上发挥作用。

伙计们如何在Git中实现这一点? 关于阅读什么的指针? 命令片段会很棒吗?

1 个答案:

答案 0 :(得分:8)

目前,我能想到的唯一方法是使用submodules。两个模块(assemblebot,vpl)都是子模块,树的其余部分都在超级项目中。

这实质上意味着这两个模块必须位于不同的存储库中,然后在主存储库中git submodule init git://foo.com/assemblebot.git

我不确定这是否值得整体努力。这不是git的优点之一(事实上,这是我认为唯一需要改进的地方)。

部分结帐的更好支持正在进行中(narrowsparse克隆)。

编辑:考虑到vpl和assemblebot依赖于include和source,或许最好将include和source作为vpl和assemblebot存储库的子模块。但是,这些不是单独的项目,git所做的是跟踪项目内容。我没有看到为什么这些模块实际上应该分开的原因。也许只是告诉开发人员不要触摸对方的代码?