对 Monorepo 和 MultiRepo 的理解?

阅读 1.4k
1 个回答

MultiRepo

  • MultiRepo 指使用多个 Git 仓库分别管理项目的每一个 模块/包/功能/应用
  • 优势

    • ​每个服务 和 库 都有自己的 版本/权限 控制
    • ​代码 checkout 和 pull 是小型且独立的,因此即使项目规模增大,也不存在性能问题
    • ​团队可以独立工作,不需要访问整个代码库
    • ​更快的开发 和 灵活性
    • ​每个服务都可以单独发版,有自己的部署周期,从而使 CI 和 CD 更易于实现
    • ​更好的权限访问控制,所有的团队不需要完全访问所有的库,需要的时候再获得读访问权限
  • ​劣势

    • ​代码复用可能存在较高成本
    • ​版本管理可能不一致
    • ​项目工作流被割裂

Monorepo

  • Monorepo 是一种项目管理方式,就是把多个项目放在一个仓库里面
  • 优势

    • ​依赖一致性

      • ​所有项目放在一个仓库当中,复用起来非常方便,若有依赖的代码变动,那么用到这个依赖的项目当中会立马感知到,并且所有的项目都是使用最新的代码,不会产生项目版本更新不及时的问题
    • ​统一项目工作流

      • ​所有项目复用一套标准的工具和规范,无需切换开发环境,如果有新的项目接入,也可以直接复用已有的基建流程,比如 CI 流程、构建和发布流程,只需要很少人力资源就可维护所有项目的基建,使得维护成本大大减少
    • ​团队协作更容易

      • 团队成员都在一个仓库开发,能够方便地共享和复用代码,方便检索项目源码
      • ​git commit 的历史记录支持以功能为单位进行一次提交即可,而 MultiRepo 对于某个功能的提交,可能需要改好几个仓库,提交多个 commit
  • 劣势

    • ​操作上可能花费更长的时间
    • ​权限不能单独管理
    • ​可能很难统一工作流
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题