Git子项目?

时间:2011-05-06 12:02:11

标签: git components git-submodules

我正在研究几个不同的Joomla附加组件,但是希望将它们作为单独的git repos保留,因为它们有不同的开发团队(甚至是组织)。但是,我还希望将它们保存为共享相同Joomla基础的单个目录(.gitignore会忽略它)。由于Joomla的结构,这可能有点复杂,因为它具有以下结构:

/joomla/  
|--/administrator/  
|--|--/components/  
|--|--|--/component_a/  
|--|--|--/component_b/  
|--|--/language/  
|--|--|--/en-GB/  
|--|--|--|--/component_a_lang.ini  
|--|--|--|--/component_b_lang.ini  
|--/components/  
|--|--/component_a/  
|--|--/component_b/  
|--/language/  
|--|--/en-GB/  
|--|--|--/component_a_lang.ini  
|--|--|--/component_b_lang.ini  

我知道我可以制作一个中央仓库,并为每个子项目使用分支,只需要小心使用右边的子项目。但有没有一种更简单的方法(子模块?)将所有子项目保存在同一目录中,所以如果我想复制整个项目进行测试,我不需要切换分支并使用copy-pasta进行播放?

2 个答案:

答案 0 :(得分:3)

通常我会建议使用子模块,但在这种情况下,由于项目的结构,它们并不合适。

子模块放在一个目录中,因此您无法将它们真正地分散到整个项目中。

一种可能的解决方案是将所有这些文件放在一个目录中,并使用符号链接将它们放在正确的位置。但这有几个缺点。您需要重新创建每个存储库上的所有符号链接,这也会导致Windows用户出现问题。

答案 1 :(得分:3)

正如@Ikke所说,代码在目录中传播的方式使得使用子模块来保存这些代码很麻烦。

我认为我只是使用单独的分支来进行单独的开发。他们是“特色”,对吧?或多或少?因此将它们视为特征分支可能是相当合适的。

如果您的中央存储库由gitolite提供服务,您可以按分支设置访问权限以分隔用户和组。你可以这样做,这样每个人都可以读取每个分支(对于测试很重要),但只有受祝福的组才能推送到他们自己的分支。