git如何处理多个项目/依赖项?

时间:2016-05-16 18:45:06

标签: git

我们的团队可能会将我们的TFS项目迁移到GIT,并且我在使用GIT模拟当前流程方面遇到了一些问题。

我们说我有Project_A,而项目A依赖于Project_B和Project_C。

项目B和C都是独立项目。

如果在Project_A中修改Project_B,我该怎么做,然后Project_B独立版也会收到更新通知。另外,如果Project_B是从独立修改的,则Project_A将收到更新通知。

任何帮助将不胜感激。我已经研究过submods,subree,subrepo和git slave,但不确定哪一个最合适。我还是GIT的新手并且增加了额外的复杂层导致了很多混乱-_-

谢谢!

4 个答案:

答案 0 :(得分:2)

由于Project B和Project C都是独立项目,您可能希望为每个项目创建一个repo,并在A&#39s的repo中使用submodules来表示B和C.子模块可以被认为是对其他对象的引用。

尽管如此,如果您想将所有项目合并到一个仓库,请使用subtree,这会将仓库合并为一个大型仓库。这有点简单,但模块化程度较低,所以我不推荐它。

Git的文档解释了这种差异:

  

不要将子模块与其他遥控器混淆   同一个项目的存储库;子模块适用于不同的   你希望成为源代码树一部分的项目   这两个项目的历史仍然完全独立于你   无法从main中修改子模块的内容   项目。如果要合并项目历史记录并想要处理   从那时起,您可能想要将整个聚合整体作为单个项目   为其他项目添加远程并使用子树合并策略,   而不是将其他项目视为子模块。那些目录   来自这两个项目可以克隆,并作为一个整体检查出来   你选择走那条路。

如果您的语言/框架支持,我还会考虑使用包而不是子模块。例如。对于ruby,您可以将gems用于依赖项目,这允许您指定依赖项,支持的版本等。

答案 1 :(得分:0)

Hacky方式:将所有依赖项目放入同一个存储库。

优雅的方式:为每个项目创建一个存储库,然后将所有存储库放入主存储库。

答案 2 :(得分:0)

Git专注于“存储库”的概念。它没有“同行存储库”或“子/父关系”的概念。我认为这是一件好事。

...无论其

您可以使用Git“事件”来通知其他Git存储库 - 并在需要时响应自动(脚本)响应。

看这里:

当然,您也可以为“系统”创建一个git仓库;并将项目A,Project_B和Project_C都放在那个回购下。

这取决于你!

答案 3 :(得分:0)

您可以尝试Google的Repo来整理整个项目。 Repo旨在管理Android代码库,该代码库通常由400多个git repos组成。