<分区>
我们的应用采用微服务架构构建,一种服务一种存储库。我们正在探索是否应该创建一个 monorepo,因为许多公司都在遵循这种做法。有很多关于单声道与许多的优缺点的讨论。如果我们想找到一个替代方案来让我们从这两个选项中获得一些缺点,我们应该使用 git 子模块来提供“相似”的单结构吗?
<分区>
我们的应用采用微服务架构构建,一种服务一种存储库。我们正在探索是否应该创建一个 monorepo,因为许多公司都在遵循这种做法。有很多关于单声道与许多的优缺点的讨论。如果我们想找到一个替代方案来让我们从这两个选项中获得一些缺点,我们应该使用 git 子模块来提供“相似”的单结构吗?
最佳答案
是的,有很多关于子模块是好是坏的讨论,但我倾向于认为有些人错误地使用了它们。就像用大锤敲钉子一样,不指望有什么缺点,只是因为它们的名字相似。
使用它们时需要考虑的一些事项:
他们之间和 super 项目之间是完全隔离的。 提交的 super 项目中不会有详细的历史记录 在子模块中制作,只是更新它的那些。
当您对子模块进行提交时,您需要推送它,因为您在另一个存储库中。如果你不这样做并且你去 super 项目更新子模块,你最终会得到一个未被推送的提交的引用。这将导致更多的问题和困惑。
这些是我经常发现并且人们提示的情况示例,但我不认为这些是缺点,只是我们需要注意的事情,以便我们可以决定它是否适合我们的项目。
我们在一个嵌入了另一个的项目中使用它,更像是一个模块。 它们都是单独开发的,我们会不时将模块更新到新版本,或者出于兼容性原因将其保留在某个版本。我们不需要知道谁在开发这个模块,或者他们做了什么,我们只想知道他们什么时候发布新版本/修复了什么。
也许有更多经验的人会分享它,我们确实需要它。
关于git - 单体仓库 VS. github子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46462610/