问题陈述
到目前为止,每个人都可以访问整个代码库。现在我需要强制人们只获取他们将要处理的模块的代码,对于其他模块,他们将获得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中实现这一点? 关于阅读什么的指针? 命令片段会很棒吗?
答案 0 :(得分:8)
目前,我能想到的唯一方法是使用submodules。两个模块(assemblebot,vpl)都是子模块,树的其余部分都在超级项目中。
这实质上意味着这两个模块必须位于不同的存储库中,然后在主存储库中git submodule init git://foo.com/assemblebot.git
。
我不确定这是否值得整体努力。这不是git的优点之一(事实上,这是我认为唯一需要改进的地方)。
部分结帐的更好支持正在进行中(narrow和sparse克隆)。
编辑:考虑到vpl和assemblebot依赖于include和source,或许最好将include和source作为vpl和assemblebot存储库的子模块。但是,这些不是单独的项目,git所做的是跟踪项目内容。我没有看到为什么这些模块实际上应该分开的原因。也许只是告诉开发人员不要触摸对方的代码?