Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.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
monorepo与github子模块_Git_Github_Microservices - Fatal编程技术网

monorepo与github子模块

monorepo与github子模块,git,github,microservices,Git,Github,Microservices,我们的应用程序采用微服务架构,一个服务一个回购。我们正在探索是否应该建立一个单一回购协议,因为许多公司都在遵循这一做法。关于mono和many的利弊有很多讨论。如果我们想找到一个替代方案,让我们从两个选项中都有一些缺点,我们是否应该使用git子模块来提供“外观相似”的mono结构 是的,关于子模块的好坏有很多讨论,但我倾向于认为有些子模块使用错误。就像用大锤敲钉子一样,不要因为它们的名字相似而期望有任何缺点 使用它们时要考虑的几个事项: 它们之间以及超级项目之间完全隔离。 提交的超级项目中不会

我们的应用程序采用微服务架构,一个服务一个回购。我们正在探索是否应该建立一个单一回购协议,因为许多公司都在遵循这一做法。关于mono和many的利弊有很多讨论。如果我们想找到一个替代方案,让我们从两个选项中都有一些缺点,我们是否应该使用git子模块来提供“外观相似”的mono结构

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

使用它们时要考虑的几个事项:

  • 它们之间以及超级项目之间完全隔离。 提交的超级项目中不会有详细的历史记录 在子模块中创建,只是更新它的那些

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

这些例子是我经常发现的,人们抱怨它们,但我不认为它们是缺点,只是我们需要知道的东西,所以我们可以决定它是否适合我们的项目。 我们在一个嵌入了另一个的项目中使用它,更像是一个模块。 它们都是单独开发的,我们会不时地将模块更新为新版本,或者出于兼容性原因将其保留在某个版本。我们不需要知道谁在做这个模块,或者他们做了什么,我们只想知道他们什么时候发布了一个新版本/修复了一些东西


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

谢谢分享。是的,我们需要先推动子模块内部,然后再向上移动到父模块以推动。。。我发现的另一件事是IDE(webstorm)无法识别并自动切换到子模块级别的终端中的分支git签出,这可能会产生很大的误导…没问题。关于IDE,如果您转到设置/版本控制,您会看到两个repo的路径,还是只看到父级?我的PhpStorm似乎知道这两种情况。但是当你打开终端进入子模块,对另一个分支进行git签出,然后再次返回IDE,导航到右下角的子模块文件夹,你看到新分支签出了吗?对于我的情况,在配置VC设置后,我可以看到所有,但必须手动切换是的,当返回IDE时,我的工作树将刷新,它将开始索引,并且当前分支已正确切换。我只能在另一家分行结账。有一颗黄色的星星总是在master上,但它似乎不会影响任何东西。如果有帮助的话,我正在运行2017.2.4版。