在git上管理更直接连接的项目
首先让我道歉,如果我重复的问题,因为有非常相似的问题,但没有解决我的关切 我有3个项目是“耦合”的,这意味着一个项目的变化将影响另一个项目。它们中的每一个都作为独立的git项目托管在github上。项目包括:在git上管理更直接连接的项目,git,github,Git,Github,首先让我道歉,如果我重复的问题,因为有非常相似的问题,但没有解决我的关切 我有3个项目是“耦合”的,这意味着一个项目的变化将影响另一个项目。它们中的每一个都作为独立的git项目托管在github上。项目包括: 服务器(…foo/server.git) cli客户端(…foo/cli client.git) web客户端(…foo/web client.git) 我需要的功能分支,发布分支,热修复程序分支和一般发布的软件 显然,web/cli客户端上的更改与服务器上的更改相结合,当我需要分支时
- 服务器(…foo/server.git)
- cli客户端(…foo/cli client.git)
- web客户端(…foo/web client.git)
但是,如果您觉得需要自动化此过程,您可以编写一个简单的shell脚本“在所有项目上创建分支.sh”和“在所有项目上合并分支.sh”。一个基本问题:当服务器和web客户端发生更改时,您是否始终计划创建cli客户端的分支?我的意思是,默认情况下,每个项目应该单独处理,然后可以生成映射。例如:cli客户端版本2.4与服务器版本1.7及更高版本兼容。web客户端版本2与服务器版本1及更高版本兼容。使用这种结构,您可以自由地修改每个客户机,而无需创建不必要的分支。也许我完全偏离了轨道,但请想一想。@AYK对CLI客户端的更改并不总是意味着服务器发生了更改。分支将跨越服务器、cli客户端和web客户端,但更改仅限于代码的cli部分。老实说,我不知道与维护版本映射相比,这是否是一个如此大的开销,分支映射涉及3个项目?谢谢你的回答,我确实同意脚本是一种方法,但没有看到将它们作为一个项目加入的“坏面”。就目前的情况来看,如果我在“同一屋檐下”加入他们,我不会失去任何东西。编写bash脚本将给我相同的最终结果,如果我没有得到任何东西,那么我会觉得走这条路是多余的。我看到的唯一不利的一面是,所有开发人员都可以访问所有3个项目,但这在我们的案例中不是问题。如果您对子模块不十分小心,您或您的同事可能会丢失数据。2.子模块还增加了开销(需要做更多的工作来释放和拉动)。按照一本好书的答案中的链接,了解它的真正作用,但最重要的是,不要让我进入你的头脑——这是你的项目,你应该做你认为最好的事情。目前对我来说,最好的解决方案是将它们合并为一个项目,在一次回购中。我不会使用子模块,同意你的观点。