Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在git上管理更直接连接的项目_Git_Github - Fatal编程技术网

在git上管理更直接连接的项目

在git上管理更直接连接的项目,git,github,Git,Github,首先让我道歉,如果我重复的问题,因为有非常相似的问题,但没有解决我的关切 我有3个项目是“耦合”的,这意味着一个项目的变化将影响另一个项目。它们中的每一个都作为独立的git项目托管在github上。项目包括: 服务器(…foo/server.git) cli客户端(…foo/cli client.git) web客户端(…foo/web client.git) 我需要的功能分支,发布分支,热修复程序分支和一般发布的软件 显然,web/cli客户端上的更改与服务器上的更改相结合,当我需要分支时

首先让我道歉,如果我重复的问题,因为有非常相似的问题,但没有解决我的关切

我有3个项目是“耦合”的,这意味着一个项目的变化将影响另一个项目。它们中的每一个都作为独立的git项目托管在github上。项目包括:

  • 服务器(…foo/server.git)
  • cli客户端(…foo/cli client.git)
  • web客户端(…foo/web client.git)
我需要的功能分支,发布分支,热修复程序分支和一般发布的软件

显然,web/cli客户端上的更改与服务器上的更改相结合,当我需要分支时,我需要在这些项目中的每个项目上创建分支(分支通常在origin上完成,以便整个团队可以协作)。在我需要合并回master等之后

我想避免这种情况,并有一个机制,使我能够分支,版本在同一时间。显而易见的答案是创建父项目,将每个项目作为子文件夹,并最终将父项目保留在一个git repo上

我的问题是,这样做的坏处是什么?这种方法似乎有点幼稚,我想知道有没有更好的方法来实现这一点?我正在研究git子模块,但它们似乎提供了下游,而不允许上游,这将允许我在所有项目之间进行分支和合并。(也许我错了)

谢谢

这里有一些。另外,这并不是git中创建子模块特性的目的,我建议不要在您的案例中使用它

您有三个彼此松散相关的项目,而不是三个存储库中的一个项目。客户端应用程序正在使用服务器,Web应用程序正在使用服务器。有时,但并非总是,一个项目上的分支名称与另一个项目中的分支名称相同,但从git的角度来看,这纯粹是巧合

我见过许多具有类似工作环境的开发团队,他们都使用了独立的存储库和独立的分支。通常,给定主题的工作在一个项目开始前的几天或几周内完成(或者根本不需要更改另一个项目)


但是,如果您觉得需要自动化此过程,您可以编写一个简单的shell脚本“在所有项目上创建分支.sh”和“在所有项目上合并分支.sh”。

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