monorepo和multrepo的简介
项目管理的方式是多种形势的,依据管理的方式类进行项目建仓。
mono或者mult其实都是项目管理的方式,只是两种方式是刚好相反的,拿来一起说是,更方便记忆而已。
multrepo:将项目分化成为多个模块,并针对每一个模块单独的开辟一个reporsitory来进行管理。
优点:1.团队自己的IDE,语言,以及工作步调。
2.模块更小,更易维护。
3.开发效率更高。
缺点:1.合并困难,每个模块规范不同,同步和编译时这些问题将会集体爆发。
2.难以保证稳定性。
3.由于可能存在不同语言开发,或者不同IDE的情况,新建或者更新构建变得困难
monorepo:是将所有的模块统一的放在一个主干分支之中管理。不进行分库存储,当有特定的需要的时候进行分支,但是问题修改还是在主干上操作,并有专门人员合并到分支内容上,在特定需求完结的时候,分支也将会被废弃。点击这里,查看详细介绍:
优点:1.统一的规范,语言,和IDE带来的是结构的完整稳定。
2.按照统一的标准进行开发,是哦程序稳定性更良好,更易解读。
3.标准化的开发流程,规避很多不必要的冲突与错误。
缺点:1.项目过大,难以管理。
2.由于统一的标准,不同的团队可能需要对于新的规范和IDE进行了解学习,需要时间。
3.修改和开发可能变得繁琐,减慢效率。
如果你们团队选择 monorepo,那主要的挑战自然是随着项目的发展,其会变得非常庞大(因为没有根据模块或功能拆分成不同 repo)。因此会需要很多的工具来应对这样的挑战。
- 你会需要强大的构建工具,比如 Google 的 Bazel, Facebook 的 Buck 和 Twitter 的 Pants。
- 仓库变得太大,对你们的版本控制技术会有很大的挑战。因为 Git 社区建议的是使用更多更小的代码库,Git 本身并不适合单个巨大的代码库。
- 因为所有的代码都放在一起,你需要时刻保持警惕,以保持良好的项目结构和提交测试。
- 在这么大的 workspace 中工作或使用了非标准化的构建工具,你常用的 IDE 可能会遇到麻烦。Facebook 就选择了构建自己的 IDE。
monorepo和multrepo的简介的更多相关文章
- Sentry 官方 JavaScript SDK 简介与调试指南
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
随机推荐
- ugui中实现圆形按钮
实现圆形按钮,原本是使用 alphHitTestMinimumThreshold 改成重载IsRaycastLocationValid来实现,直接贴代码 using UnityEngine; usin ...
- php socket 处理只是来数据流,该怎样避免(好像是堵塞了)
php socket 处理只是来数据流,该怎样处理(好像是堵塞了) 需求:php接受一个硬件往8888port上发送数据,假设收到后,应socket_send函数返回"\xFA\x01\x0 ...
- Keras网络层之常用层Core
常用层 常用层对应于core模块,core内部定义了一系列常用的网络层,包括全连接.激活层等 Dense层 keras.layers.core.Dense(units, activation=None ...
- mysql中变量的定义
mysql中的变量定义 mysql的变量分为系统变量和用户变量,mysql系统定义的变量是系统变量,用户自己定义的变量为用户变量.对于系统变量,用户只能够改变它的值不能够创建新的系统变量.对于用户变量 ...
- Java并发(2):Lock
在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问.本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方 ...
- Spring.Net依赖注入(属性注入)
一.前言: Spring.Net是Java开源框架迁移过来的,主要分为 1)依赖注入 2)面向方面编程 3)数据访问抽象 4)Asp.Net扩展 四个模块功能,这里只是简单介绍依赖注入模块功能. 对于 ...
- CNN学习笔记:全连接层
CNN学习笔记:全连接层 全连接层 全连接层在整个网络卷积神经网络中起到“分类器”的作用.如果说卷积层.池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的特征表示映射到样 ...
- linux crontab命令 自动下载文件
#crontab -e#download stock data, Mon-Fri, 9:15 - 11:30, 13:00 - 15:0015,30,40,50 9 * * 1-5 (cd /home ...
- PAT 天梯赛 L1-022. 奇偶分家 【水】
题目链接 https://www.patest.cn/contests/gplt/L1-022 AC代码 #include <iostream> #include <cstdio&g ...
- 自定义mousewheel事件,实现图片放大缩小功能实现
本文是承接 上一篇的<自定义鼠标滚动事件> 的基础上实现的,建议大家先看一下上一篇的mousewheel的实现,再浏览下文: 上篇中我们介绍到: $element.mousewheel( ...