monorepo VS. github子模块

Ham*_*mer 6 git github microservices

我们的应用程序是建立在微服务架构,一个服务一个回购.我们正在探索是否应该创建monorepo,因为许多公司都在遵循这种做法.关于单声道与多声道的优缺点有很多讨论.如果我们想找到一个替代方案,允许我们从这两个选项中得到一些缺点,我们是否应该使用git子模块来提供"外观相似"的单声道结构?

小智 8

是的,有很多关于子模块是好/坏的讨论,但我倾向于认为有些人使用它们是错误的.就像用大锤击打钉子而不期待任何缺点一样,只因为它们有相似的名字.

使用它们时需要考虑的一些事项:

  • 它们完全隔离在它们之间和超级项目之间.在子模块中提交的提交的超级项目中将没有详细的历史记录,只是更新它的那些.

  • 当你在子模块上进行提交时,你需要推送它,因为你在另一个repo中.如果不这样做,并且您转到超级项目来更新子模块,则最终会得到对未推送的提交的引用.这将导致更多的问题和混乱.

这些是我经常发现并且人们抱怨它们的情况的例子,但我不认为这些是缺点,只是我们需要注意的事情,所以我们可以决定它是否适合我们的项目.

在一个嵌入了另一个的项目中使用它,更像是一个模块.它们都是单独开发的,并且我们会不时地将模块更新为新版本,或者出于兼容性原因将其保留在某个版本中.我们不需要知道谁在使用该模块,或者他们制作了什么,我们只是想知道他们何时发布新版本/修复了某些内容.

也许有经验的人会分享它,我们确实需要它.