如何设置 Git 项目以包含其他项目?
例如。我正在开发一个在线地图应用程序。我们开发了一个 GPS 工具和 SF 的一套装备。我们同时开发了一个 Python 地理映射脚本和一个不同的关注点(只关心地理映射)。我们自己的核心文件将两者结合起来,并在它们的基础上构建我们需要的应用程序。
每个项目都必须单独存在——对 GPS 感兴趣的人只对 GPS 感兴趣——但包含所有其他项目的“父”项目必须作为项目访问。
我花了一些时间试图理解子模块,但它们似乎对所需的东西有太多的独立性。
此外,如果可能的话,如果这些项目中的每一个都可以包含一个或两个重叠的脚本,那就太好了。一个 Git 项目是否可以包含一个不属于其“根”的文件,以便当任何一个团队更新该文件时,双方都可以受益?
这对 Git 可行吗?与水银?主机(GitHub、Gitorious)重要吗?
我有使用 Subversion 作为“父级”的想法——忽略 .git 文件夹,并将 Git 用于项目(忽略 .svn 文件夹)——但这只是最后的手段。
编辑:
解释为什么我不想要子模块:
- 用户下载时,zip 不包含子模块(此处和此处)。当甚至合作者尝试设置项目时也是如此。这是一个表演终结者。
- 子模块被冻结 - 它们不会(轻松)获取所指向的项目的最新版本。
- 下面的精彩答案和NoPugs的独白中指出的其他原因。
子树合并(由 Paul 介绍给我,如下)不会:很难从合并到的项目中更新 [子树] 的源,并且该源必须位于“根”文件夹之外该项目。作为一个网络应用程序,我的所有页面都必须在内部链接到其中的一个文件夹,并且直接在该文件夹中完成测试和更新。(希望这对其他人来说清晰且有用。)
仍在研究建立“远程分支”,但仍然欢迎其他想法。