我们的团队可能会将我们的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的新手并且增加了额外的复杂层导致了很多混乱-_-
谢谢!
答案 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存储库 - 并在需要时响应自动(脚本)响应。
看这里:
How To Use Git Hooks To Automate Development and Deployment Tasks
当然,您也可以为“系统”创建一个git仓库;并将项目A,Project_B和Project_C都放在那个回购下。
这取决于你!
答案 3 :(得分:0)
您可以尝试Google的Repo来整理整个项目。 Repo旨在管理Android代码库,该代码库通常由400多个git repos组成。