写点什么

微软工程师介绍了 Git 中一个会导致代码库膨胀的缺陷,修复方案即将推出

  • 2024-11-12
    北京
  • 本文字数:897 字

    阅读完需:约 3 分钟

大小:406.20K时长:02:18
微软工程师介绍了Git中一个会导致代码库膨胀的缺陷,修复方案即将推出

文最初发布于 DEV CLASS。



Git 计算同一文件不同版本差异的方法存在缺陷,可能会使代码库膨胀数倍,导致性能问题并消耗过多的存储空间。


微软高级工程师 Jonathan Creamer 发文 介绍了其团队使用的一个非常大的 JavaScript Git 存储库,一个单体库(一个存储库,存储多个相关的项目)。该库的每月活跃用户数超过 1000 人,代码行数约为 2000 万行。根据 Creamer 的报告,克隆这个存储库消耗了超乎想象的 178GB 磁盘空间。


该团队咨询了 Git 贡献者 Derrick Stolee(曾在 GitHub 工作,现为微软首席软件工程师)。他发现,在比较两个文件名是常用名的文件(本例中为 CHANGELOG.md)时,Git 实际上是在比较来自不同软件包的文件,因此每次提交都会发现很大的差异。


Stolee 向 Git 提交了一个 Pull 请求,添加了他所谓的 “path walk API”,使 Git 能够按路径对对象进行分组,“完全避免了文件名的哈希碰撞”。Creamer 使用新增的-path-walk参数,将git repack命令应用于这个大型存储库,结果库的大小减小到了 5GB。


在 Linux 内核邮件列表上,Stolee 也 发了 关于这个问题的帖子,称 “其主要发现是当前的文件名哈希算法只考虑了路径名的最后 16 个字符,在这样一个范围内自然会发生一些碰撞”。


在另一篇文章中,Stolee 指出:“在我查看的存储库中,按磁盘大小排序的前 100 个文件路径有一个明显的模式:其中 99 个是 CHANGELOG.json 和 CHANGELOG.md 文件...... 本应是一组微不足道的增量,却膨胀到了 20-60MB” 。


Stolee 还举了其他一些存储库的例子,用于说明新选项大大减少了它们所需的存储空间,其中一个存储库占用的存储空间从 130049MB 减少到了 4432MB。


Git 存储库过大的后果不仅是占用过大的磁盘空间,而且还会导致 Git 运行缓慢,有时甚至会完全失败,这取决于延迟和可用带宽。


虽然新选项确实可以显著节省空间,但这些例子都是大型存储库,有很多潜在的文件名冲突。典型的 Git 存储库无法以同样的方式受益。尽管如此,开发者们还是很希望在 Git 的发行版本中看到这些新功能。


原文链接:

https://devclass.com/2024/10/29/microsoft-engineer-describes-a-flaw-in-git-that-can-hugely-bloat-repositories-fix-is-on-the-way/

2024-11-12 18:237431

评论

发布
暂无评论
发现更多内容

小米集团信息技术部|面向多业务的研发效能体系建设与实践

ToB行业头条

AI Agent技术的最新进展与改变世界的典型项目巡礼

汀丶人工智能

人工智能 大模型 Agent智能体

Go 项目自动重载解决方案 —— Air 使用入门

左诗右码

Go

从0到100:4S店服务小程序开发历程

CC同学

集业界领袖,话数据库未来,华为云数据库斯享会深圳站成功举办

Geek_2d6073

万界星空科技汽车零部件行业MES介绍

万界星空科技

mes 汽车行业 汽车零部件 汽车零配件行业 汽车零部件mes

【程序大侠传】大表分库分表切换数据库类型导致pagehelper生成sql语法报错

Disaster

AI绘图实践-用人工智能生图助力618大促

京东零售技术

AIGC 企业号2024年7月PK榜

深入理解JVM:内存管理与垃圾回收机制探索

乘云数字DataBuff

JVM 内存

三连冠!百度文库再次登顶AI产品榜

Geek_2d6073

阿里巴巴商品详情数据接口(alibaba.item_get)丨阿里巴巴API实时数据接口指南

tbapi

阿里巴巴 阿里巴巴商品详情数据接口 阿里巴巴API

数字身份管理发展趋势:IAM 和数据安全相结合

芯盾时代

数字身份 身份安全 数据安全 iam 统一身份认证

透明LED显示屏:引领现代新视觉

Dylan

技术 LED LED显示屏 全彩LED显示屏 led显示屏厂家

AI 应用实战营 - 作业 三- MidJourney参数测试

德拉古蒂洛维奇

京东工业平台商品详情数据接口(vipmro.item_get)丨京东工业平台数据API

tbapi

京东工业平台数据采集 京东工业平台 京东工业平台API接口

千帆大模型平台升级十大能力,企业级 RAG 全面升级

Baidu AICLOUD

千帆大模型平台 rag

软件测试学习笔记丨JUnit5自定义动态测试的执行顺序

测试人

软件测试

深耕分析型数据库领域,火山引擎ByteHouse入围《2024爱分析数据库厂商全景报告》

字节跳动数据平台

数据库 大数据 云原生 bytehouse Click house

性能测试:行业流行性能剖析工具介绍

测试人

软件测试

ICE启动AI:人工智能高频交易平台测试进入尾段

科技热闻

飞书邀请ToB伙伴们一起共建“生态绿洲”!

ToB行业头条

开源数据库Greenplu突然闭源?GaussDB(DWS)提供数仓新可能

华为云开发者联盟

数据库 postgresql 华为云 华为云开发者联盟 企业号2024年7月PK榜

解读jd.item_search_img API返回值:京东按图搜索的智能匹配

技术冰糖葫芦

API Explorer API 调试 API 文档 API 协议

ICE启动AI:人工智能高频交易平台测试进入尾段

科技汇

微软工程师介绍了Git中一个会导致代码库膨胀的缺陷,修复方案即将推出_安全_Tim Anderson_InfoQ精选文章