Java 一个存储库中的多个项目GitHub

Java 一个存储库中的多个项目GitHub,java,git,github,architecture,repository,Java,Git,Github,Architecture,Repository,我有5个java项目在一起工作。起初,我独自一人在做这些项目。现在有人加入了我,我们实际上需要使用GitHub来高效地工作 项目A是一个主项目,它不依赖于任何其他项目。 项目B取决于项目A。 项目C取决于B和A。 项目D等 我面临一个设计问题: 我应该使用一个git回购并将它们放在不同的文件夹中吗? 我是否应该使用不同的git回购协议并保持它们的独立性(可能更适合提交)? 我应该使用不同的git回购协议并将它们重新组合到一个主git回购协议中吗 提前感谢您的帮助。这可以为您提供如何组织项目的正确

我有5个java项目在一起工作。起初,我独自一人在做这些项目。现在有人加入了我,我们实际上需要使用GitHub来高效地工作

项目A是一个主项目,它不依赖于任何其他项目。 项目B取决于项目A。 项目C取决于B和A。 项目D等

我面临一个设计问题:

我应该使用一个git回购并将它们放在不同的文件夹中吗? 我是否应该使用不同的git回购协议并保持它们的独立性(可能更适合提交)? 我应该使用不同的git回购协议并将它们重新组合到一个主git回购协议中吗


提前感谢您的帮助。

这可以为您提供如何组织项目的正确答案,但请记住,这只是一个基于意见的答案,因为没有最好的方法。

您应该将每个答案放在自己的git存储库中

然后可以使用git子模块将依赖的项目添加到另一个项目中

例如: 项目A将包含项目B作为子模块



事实上,您的问题可以概括为:我应该使用单回购方式还是多回购方式?
这是一个宽泛的主题,但让事情变得简单:它取决于这些项目之间的耦合级别和生命周期

如果这些项目是为了共同生存和发展而设计的,那么您需要使用mono-repo方法并在中添加多个项目。例如,如果只有这些项目之间存在依赖关系,并且当您更改依赖关系时,您将更改使用者,那么在多个存储库中拆分它们显然没有任何价值。
它将使全局源代码的可读性变弱,并使同一用例的多个存储库上的commit/pull/request/merge变弱,从而使它们的可读性和一致性变弱

如果这些项目不是为共同生存和发展而设计的,那么您希望使用多回购方法,并在每个回购中拥有一个项目。例如,如果这些项目中的一些被您引用的应用程序以外的其他应用程序使用,那么在使用者项目的存储库中耦合项目依赖关系没有任何价值,因为还有其他使用者,那么为什么是该使用者而不是另一个使用者呢

您还可以使用Google或Facebook使用的一种方法,在同一个存储库中添加所有(或几乎)项目,无论项目之间的耦合程度如何。
做这样一件事并不简单,需要精心定制CDCI和SCM工具,以使事情在回购规模的基础上保持实用和简单。

不要将git用作托管依赖项。