互联网巨头决定抛弃Git......

STM32F407 CubeMX UART DMA高效解析BNO085九轴数据 本文详细介绍了如何在STM32F407平台上使用CubeMX配置UART和DMA高效解析BNO085九轴传感器数据。通过DMA循环接收机制实现低CPU占用的实时数据采集,并分享数据解析技巧、错误处理及实战调试经验,为嵌入式开发者提供完整解决方案。 阅读详情

1

两个软件同时诞生

2005年4月,Larry发现有Linux内核开发者违反了协议,正在对自己的宝贝软件BitKeeper做逆向工程,他怒不可遏,撤销了Linux的使用许可。

(详情参见:被Linux之父力挺的软件,开源后倒下了...)

Linux一下子面临着没有源码管理系统的窘境!

这件事情影响很大,第一,Linus Torvalds不得不停下内核的开发和管理工作,开始开发Git。

第二,它促使Olivia Mackall发布了几周前开发的Mercurial v0.1 ,和Git一样,这也是一个可扩展的分布式版本控制系统。

9b622d605888a46816a74f2a3355736d.png

两个分布式版本控制系统可以说是同时起步。

很明显,顶着Linux光环的Git(当然它自身非常优秀)受到了更多人的欢迎,很多公司选择了Git,其中就包括互联网巨头Facebook。

93b7514999eee7c7cb636c007b9fd829.jpeg

随着业务的飞速发展,Facebook的代码库也开始以惊人的速度增长。

单单是2013年,Facebook的Git代码仓库就提交了4.4万个文件,1700万行代码,甚至比Linux内核的规模更庞大,更复杂。

更要命的是,Facebook和另外一个巨头Google一样,把公司的所有项目代码都“塞”到了一个代码库中!

为什么要单一代码库的策略呢?这么做有很多好处:

(1) 统一的版本化管理,不需要fork 共享库,没有跨代码库merge复制代码的痛苦

(2) 广泛的代码共享和复用

(3) 简化的依赖管理

(4) 跨团队的合作很方便

2

Facebook决定抛弃Git

可是,随着单一代码库的飞速增长,Git操作变得越来越慢。

Facebook的工程师对未来几年的代码库规模做了估计,创建了一个虚拟仓库做一个模拟,结果让人震惊,基本的Git命令都需要45分钟才能完成!

必须得寻找解决方案了!

Facebook组建了一个团队,专门来解决这个问题。

他们先是联系了Git维护者,但是要想解决Facebook的问题,Git内部必须得做一些深度的代码修改不可。

所以Git维护者的回复是:你们的代码库太大了,应该分拆代码库......

Git社区对于提升单一超大代码库的性能并不是十分积极,因为很少人这么用啊!

Git这条路走不通,Facebook又考虑了闭源的Perforce,这也是一个老牌的版本控制系统,成立于1995年。

5f6bb99136b86cc579ce66c15ee50a6e.png

Salesforce、Netflix、SAP、迪士尼、Intuit和纽约证券交易所都是它的客户,Google也曾经用过,Perforce在游戏领域是领导者,游戏厂商前20强有18家在用Perforce做版本控制。

在和Perforce的销售工程师接触的时候,Facebook发现Perforce在“读取和写入节点的本地一致性存在缺陷。” 不过Perforce并不认为这是一个大问题,也没有计划来解决它。

放弃了Perforce以后,一个有丰富Mercurial使用经验的工程师建议考虑一下Mercurial。

Mercurial用Python写成,采用了面向对象的各种模式,架构更简洁,更容易扩展。

比如对于Facebook这样大规模的存储库,一个主要的瓶颈就是找出哪些文件发生了变化。Git的办法是检查每个文件,随着文件数量的增加,就会变得越来越慢。

Facebook内部有个工具叫做watchman,可以检测文件的状态变化,Mercurial 良好设计使得和watchman的集成非常简单,最终集成了watchman的Mercurial在查看文件状态时,比Git快了5倍以上。

55791d5970388c8fa804b3778e40bf8c.png

Mercurial还有几个很好的抽象,例如filelog,这个数据结构表示每个文件的每次修订,Facebook通过remotefilelog扩展了这个接口,使得超大存储库的pull和clone速度提升了10倍以上,从几分钟缩短到几秒钟。

a98439f704f5b47489d2cad6b42fb877.png

Mercurial社区也非常开放,愿意和Facebook合作,为了解决Facebook遇到的问题,可以对Mercurial做出重大变革。

双方合作相当良好,Facebook从Git向Mercurial迁移的时候,在一年半的时间内贡献了500多个补丁,包括新的图算法,用C语言重写性能关键的部分等等。

Mercurial则认真地审阅这些补丁,主动帮助Facebook解决扩展性问题,在设计新功能的时候也会把Facebook的问题考虑在内。

这和当时的Git社区形成了鲜明的对比。

十年后,Git也做出了重大改进,可以很好地处理非常大的单一存储库,但

Facebook不会再迁移回来了。

3

Google 发明新轮子

说完了Facebook,再来说说Google。

Google的代码库更大,更加吓人。

截止到2015年,这个代码库一共有20亿行代码,占据了86T的空间。 

数字没有直观感觉,看个图吧:Windows,Office等常见软件在中间,Google代码库是最下方的绿色方块。

391ae78b85b6e17465121e29b2bf7b0b.png

除了Chrome和Android之外,大部分Google产品的代码都保存在一个代码库中。

Google最早用的版本控制系统是闭源的Perforce,可见在创业初期,像版本管理这样的工具,大家都是拿来就用的,不考虑什么开源不开源的。

为了支撑自己业务的发展,Google不断地想办法扩展Perforce,但是扩展也是到了尽头:CPU超负荷运转,时不时出现TCP连接失败。

Google也考虑了Git,但当时Git的主流观点是:应该使用更多更小的代码库。这和Google单一代码库的理念是完全相反。

就像2005年Linus被迫发明Git一样,Google也被迫发明了自己新的版本管理系统:Piper

新工具开发起来很容易,但是把数据从Perforce迁移到Piper非常难。

在过去的11年间,Perforce已经深深地融入了Google的生态系统,基于Perforce Google已经开发了300多种工具。

2010年,Oracle状告Google,指控它在Android中使用了未经授权的Java API,这给Google敲响了警钟,千万不用复制Perforce的API。

最后Google工程师不得不采用了“洁净室”的技术,由独立的,对Perforce API一无所知的工程师来进行设计。

向Piper的迁移花费了4年的时候,才大功告成。

4

总结

Facebook和Google都是标准的互联网巨头,在他们代码库的发展过程中,一直坚持单一代码库的策略,都“抛弃”了Git。

Facebook选择现成开源软件Mercurial,疯狂魔改,使其满足自己的要求。

Google则选择发明一个新轮子Piper,花费巨大经历进行迁移。

他们所做的事情,不是一般公司能干的,对绝大多数公司来说,选择Git就足够了。

全文完,觉得不错的话点个赞或者在看吧!

近期爆文:

这两个程序员要花100万,彻底重写世界上最复杂的软件

世界上最大的盗版网站,遇到麻烦了!

美国的顶尖程序员,深夜都在狂玩儿这个游戏!

这个女生写的软件,解决了无数程序员最头疼的问题!

你们程序员为什么不靠自己的项目谋生?而必须为其他人打工?

摆了个摊,日销930元,80后女产品经理不再焦虑了

特殊通信领域场景应用:基于Simulink的数字预失真(DPD)算法仿真建模示例 增益压缩:高功率输入时输出信号的增益下降。相位失真:输入信号的相位随功率变化而改变。带外干扰:非线性失真会引入额外的频谱分量,影响邻道信号。多项式模型:用多项式拟合功率放大器的非线性特性。查找表(LUT):通过离线训练生成预失真映射表。自适应算法:实时调整预失真参数以动态补偿失真。发送端:生成随机比特流并调制为射频信号。预失真模块:对输入信号进行预失真处理。功率放大器模块:模拟非线性失真。接收端:解调信号并评估误码率(BER)。 阅读详情

相关推荐

【SigmaStar SSC335系列】空片用Flash_Tool烧写

简介 本文主要讲新拿到的PCBA,板上spi nand flash还是空的,如何在这种情况下烧录固件,这里讲解用官方Flash_Tool烧写的方式。 但只讲一些注意的地方和坑,其它的官方文档里说的比较清楚,不多说。 准备 Flash_Tool烧写软件 编译打包好烧写镜像 串口烧录小板 ----- 这个是个坑,在官方文档里并没有提及,刚开始用的平时调试的USB转串口,怎么都没反应,一度不知烧写软件不对还是硬件有问题,最后通过厂家技术支持才得知,除了专门的Flash_Tool外,还要专门的串口烧录器

老K 4700

Facebook为什么要弃用Git?

???? 这是一个或许对你有用的社群???? 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:《项目实战(视频)》:从书中学,往事上“练”《互联网高频面试题》:面朝简历学习,春暖花开《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题《精进 Java 学习指南》:系统学习,互联网主流技术栈《必读 Java 源码专栏》:知其然,知其所以然????这是一个或许...

芋艿V 149

Altium Designer操作技巧(1)——原理图中如何批量替换元器件?

《AltiumDesigner批量替换元器件技巧分享》摘要:本文介绍了两种在AltiumDesigner中批量替换元器件的实用方法。方法一通过“查找相似对象”功能,可精准匹配并批量修改器件参数;方法二利用ActiveBOM功能,在BOM表中直观操作器件替换,推荐使用第二种方法可使BOM管理更高效。这些技巧能有效减少物料种类、降低贴装成本,特别适用于电阻电容等常用器件的批量替换。关注公众号获取更多电子设计技巧。

u012526819的博客 2590

2024 年了,Facebook、Google 竟然都不用 Git 管理代码?

Facebook选择Mercurial的原因主要是出于性能考量和合作与支持的考虑。随着代码规模的急剧增长,Facebook发现Git在大型单库操作上的性能存在限制。与此同时,Mercurial的维护者和社区更愿意与Facebook合作,提供了良好的支持和沟通渠道。这使得Facebook工程师们得到了必要的支持,并顺利完成了从Git到Mercurial的迁移。而Google选择自行研发的Piper系统则是基于其特殊的代码库规模和安全性需求。

IT界那些事儿 8203

贝塞尔曲线基础

贝塞尔曲线于1962年由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau演算法开发,以稳定数值的方法求出贝兹曲线。

YiYeZhiNian的博客 2050

基于遗传算法的柔性作业车间调度(初始化以及编码策略)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

菜鸡 8596

为什么互联网巨头们纷纷使用Git而放弃SVN?(内含Git核心命令与原理总结)

你想要的Git命令都在这儿了!!

冰河的专栏 2394

寻迹Arduino智能小车

Arduino巡线寻迹智能小车

Rachael_Wang的博客 1万+

git提交到指定文件夹_为什么互联网巨头们纷纷使用Git而放弃SVN?

写在前面 最近发现很多小伙伴对于工作中的一些基本工具的使用还不是很了解,比如:Git这个分布式的代码管理仓库,很多小伙伴就不是很了解,或者说不是很熟悉。甚至有些小伙伴都没听说过Git,就只会用个SVN。殊不知,当今各大互联网巨头和新兴起的互联网黑马公司,基本都是用的Git,而基本废弃了对SVN的使用。为什么呢?我们一起往下看。Git与SVN的区别 存储方式不同Git把内容按元数据方式存储...

weixin_42551508的博客 102

嵌入式八股文-ARM

嵌入式八股文总结(ARM篇)-优快云博客现象:I2C死锁就是时钟线SCL一直处于高电平,数据线SDA一直处于低电平。从机拉低数据线SDA时(发送应答信号给主机时或发送数据0时)主机意外复位,主机复位后时钟线SCL就为高电平了,此时,SCL为高电平而SDA为低电平,主机就以为有其他设备占有了总线,而SCL为高电平时 数据位SDA不允许有变化,意思是:主机就一直等待时钟线SDA拉高,而从机就一直等待时钟线SCL拉高 就造成了死锁的现象。解决方法:1.选择带有复位功能的从设备,复位后SDA被拉高。

m0_63127436的博客 1262

【HCIA学习记录】WLAN配置实验

HCIA-WLAN

寸先生的AI道路 3874

git 回滚_为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)

写在前面最近发现很多小伙伴对于工作中的一些基本工具的使用还不是很了解,比如:Git这个分布式的代码管理仓库,很多小伙伴就不是很了解,或者说不是很熟悉。甚至有些小伙伴都没听说过Git,就只会用个SVN。殊不知,当今各大互联网巨头和新兴起的互联网黑马公司,基本都是用的Git,而基本废弃了对SVN的使用。为什么呢?我们一起往下看。Git与SVN的区别存储方式不同Git把内容按元数据方式存储类似k/v数据...

weixin_39819974的博客 77

CentOS 7下rsyslog日志服务器搭建全攻略:从安装到避坑

本文详细介绍了在CentOS 7系统上搭建rsyslog日志服务器的完整流程,从基础安装到高级配置,包括协议设置、日志模板设计、安全加固和性能优化。特别分享了生产环境中的实战技巧和常见问题解决方案,帮助用户高效构建可靠的日志管理系统。

happy2的博客 687

.svn文件夹_为什么互联网巨头们纷纷使用Git而放弃SVN?

写在前面 最近发现很多小伙伴对于工作中的一些基本工具的使用还不是很了解,比如:Git这个分布式的代码管理仓库,很多小伙伴就不是很了解,或者说不是很熟悉。甚至有些小伙伴都没听说过Git,就只会用个SVN。殊不知,当今各大互联网巨头和新兴起的互联网黑马公司,基本都是用的Git,而基本废弃了对SVN的使用。为什么呢?我们一起往下看。Git与SVN的区别 存储方式不同Git把内容按元数据方式存储...

weixin_39982017的博客 161

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

为什么互联网巨头们纷纷使用Git而放弃SVN?(内含Git核心命令与原理总结)(1)

由于篇幅限制,小编在此截出几张知识讲解的图解9a(2)基于键获取指定内容Git基于该功能 把每个文件的版本中内容都保存在数据库中,当要进行版本回滚的时候就通过其中一个键将期取回并替换。由于篇幅限制,小编在此截出几张知识讲解的图解[外链图片转存中…(img-w4T7WeM9-1714555476243)][外链图片转存中…(img-7UhK15cN-1714555476244)][外链图片转存中…(img-2dMN6e6K-1714555476244)]

2401_84024576的博客 105

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

add git 指定类型文件夹_为什么互联网巨头们纷纷使用Git而放弃SVN?(内含Git核心命令与原理总结)...

写在前面 最近发现很多小伙伴对于工作中的一些基本工具的使用还不是很了解,比如:Git这个分布式的代码管理仓库,很多小伙伴就不是很了解,或者说不是很熟悉。甚至有些小伙伴都没听说过Git,就只会用个SVN。殊不知,当今各大互联网巨头和新兴起的互联网黑马公司,基本都是用的Git,而基本废弃了对SVN的使用。为什么呢?我们一起往下看。Git与SVN的区别 存储方式不同Git把内容按元数据方式存储类似k/...

weixin_39674190的博客 72

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

add svn 多个文件_为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)

写在前面最近发现很多小伙伴对于工作中的一些基本工具的使用还不是很了解,比如:Git这个分布式的代码管理仓库,很多小伙伴就不是很了解,或者说不是很熟悉。甚至有些小伙伴都没听说过Git,就只会用个SVN。殊不知,当今各大互联网巨头和新兴起的互联网黑马公司,基本都是用的Git,而基本废弃了对SVN的使用。为什么呢?我们一起往下看。Git与SVN的区别存储方式不同Git把内容按元数据方式存储类似k/v数据...

weixin_32200323的博客 83

欧洲赢麻了!互联网巨头被迫拆围墙;git常用命令速查;Diffusion扩散模型实例教程集;高效C++机器学习库;前沿论文 | ShowMeAI资讯日报

开源色情图像检测引擎、Python经典像素风游戏制作引擎、快速灵活的C++机器学习库、动态图图学习框架、用于计算各种文本特性的库、git常用命令速查、Diffusion扩散模型实例教程集 (Notebooks)、神经辐射场(NeRF)相关文献资源列表、前沿论文…点击获取全部资讯

ShowMeAI研究中心 1万+

为什么互联网纷纷使用Git而放弃SVN?(内含Git核心命令与原理总结)

写在前面 最近发现很多小伙伴对于工作中的一些基本工具的使用还不是很了解,比如:Git这个分布式的代码管理仓库,很多小伙伴就不是很了解,或者说不是很熟悉。甚至有些小伙伴都没听说过Git,就...

dabaoshiwode的博客 547

三种常见的 Mac 安装 git 工具的方法

目录 前言 正文 一、佛系法 二、brew 法 三、终极大法 结尾 前言 有时候新 Mac 本子需要安装 git 工具,或者原来的 git 工具损坏了,再或者需要升级 git 版本,都需要涉及重新安装 git,本文将介绍三种常见的安装方法。 正文 一、佛系法 这种安装方式完全随缘了,所以称为佛系法。首先,在 Mac 本子上执行如下命令: git --version 如果本子上已经安装了 git 工具,会输出类似下面的版本信息: git version 2.24.3

liuzhen007的专栏 5万+

互联网后端工程架构全景

经过几十年的发展,在互联网大厂的技术引领下,互联网技术基础设施不断成熟并趋向统一,今天梳理下目前互联网主流技术中间件及后端工程架构全景图(如下图所示)。 研发流程 项目需求管理是所有大型软件开发项目必备的基础设施。Atlassian公司的JIRA是这个领域成熟的商业软件,国内许多互联网公司都在使用或曾经使用过。它实践了敏捷项目开发的管理理念,几乎所有互联网软件开发都是采用敏捷开发模式。 文档协作能提高多人协同工作效率,几乎所有组织都需要。这个领域国内外都有非常成熟的软件和解决方案,比如国外Atlassia

互联网工匠 1724

国内知名互联网企业开源项目简介及Git位置

阅读目录 阿里腾讯百度网易新浪搜狐豆瓣大众点评 阿里 阿里的开源项目很多,这也跟@淘宝正明的开源态度密不可分。有很多重量级的项目,例如LVS、Tengine,或者很有实践价值的中间件,例如 MetaQ(分布式消息系统)、dubbo(RPC框架)、cobar(数据库中间件),或者是Java世界的工具,例如druid、fastjson。都说国内Java公司的技术架构大部分

https://github.com/JelinYao 2577

.svn文件夹_为什么互联网纷纷使用Git而放弃SVN?(内含Git核心命令与原理总结)...

写在前面 最近发现很多小伙伴对于工作中的一些基本工具的使用还不是很了解,比如:Git这个分布式的代码管理仓库,很多小伙伴就不是很了解,或者说不是很熟悉。甚至有些小伙伴都没听说过Git,就只会用个SVN。殊不知,当今各大互联网巨头和新兴起的互联网黑马公司,基本都是用的Git,而基本废弃了对SVN的使用。为什么呢?我们一起往下看。Git与SVN的区别 存储方式不同Git把内容按元数据方式存储...

weixin_39683769的博客 66

如何拿到互联网巨头的前端 offer

在求职的道路上谁都会迷茫,彷徨,但是如何走出来,找到你职业的方向是本场 Chat 的关键主题。谨以此文献给准备或者即将成为前端工程师的同学们。 一个合格的前端开发需要那些知识储备? 面试前你应该做怎样的准备? 面试时候如何做到随机应变? ...

GitChat 493

互联网摸鱼日报(2023-02-14)

被逼出来的自主可控,从华为自研看国产IDE的未来和商业模式告别SVN,Git成“独苗”:GitHub 在 13 年后宣布淘汰Subversion支持根服务器为什么要“泡澡”?如何正确重启互联网?解析《流浪地球2》的硬核黑科技金融分布式多活架构在落地时都有哪些值得关注的点?|InfoQ大会早班车第31期被批不够安全, C++ 创建者压力下提出解决方案当ERP遇到ChatGPT,新世界的大门被打开原美团联合创始人王慧文宣布进军AI,出资5000万美元再创业,要打造“中国OpenAI”挖掘金融场景下的数据要素价

weixin_43849685的博客 447
上一篇: 两位巨佬吃了一顿晚饭,整个互联网彻底被改变了!
下一篇: 被副业赚钱的文章洗脑后,90后女码农跳入了“大坑”......
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值