今天看啥  ›  专栏  ›  InfoQ

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

InfoQ  · 公众号  · 科技媒体  · 2024-10-31 15:45

主要观点总结

本文介绍了Git计算同一文件不同版本差异的方法存在的缺陷,可能导致代码库膨胀并消耗过多的存储空间和性能。微软高级工程师Jonathan Creamer描述了一个大型JavaScript Git存储库的问题,其中涉及文件名哈希碰撞导致的问题。咨询师Derrick Stolee向Git提交了一个Pull请求,添加了一个新选项以解决这个问题。新选项可以帮助减少大型存储库所需的存储空间,但对小型存储库的效益可能有限。尽管如此,开发者们仍希望这些新功能能纳入Git的发行版本。

关键观点总结

关键观点1: Git存在计算文件差异缺陷,可能导致代码库膨胀。

Git在计算同一文件的不同版本差异时可能存在缺陷,这可能导致代码库比实际需要的更大,消耗更多的存储空间和性能。

关键观点2: 微软团队遇到的问题及解决方案。

微软团队遇到了一个涉及大型JavaScript Git存储库的问题,其中文件名哈希碰撞导致了问题。他们咨询师Derrick Stolee向Git提交了一个Pull请求,添加了一个新选项来解决这个问题,该选项可以通过减少不必要的文件差异计算来显著减少存储库的大小。

关键观点3: 新选项对大型存储库的益处及限制。

新选项可以显著节省大型存储库的存储空间,但在小型存储库上的效益可能有限。尽管如此,开发者们仍希望这些新功能能纳入Git的发行版本。

关键观点4: Git存储库过大带来的后果。

除了占用过大的磁盘空间外,过大的Git存储库还可能导致Git运行缓慢或甚至失败,这取决于延迟和可用带宽。


文章预览

作者 | Tim Anderson 译者 | 平川 策划 | Tina 本 文最初发布于 DEV CLASS。 Git 计算同一文件不同版本差异的方法存在缺陷,可能会使代码库膨胀数倍,导致性能问题并消耗过多的存储空间。 微软高级工程师 Jonathan Creamer发文 介绍了其团队使用的一个非常大的 JavaScript Git 存储库,一个单体库(一个存储库,存储多个相关的项目)。该库的每月活跃用户数超过 1000 人,代码行数约为 2000 万行。根据 Creamer 的报告,克隆这个存储库消耗了超乎想象的 178GB 磁盘空间。 该团队咨询了 Git 贡献者 Derrick Stolee(曾在 GitHub 工作,现为微软首席软件工程师)。他发现,在比较两个文件名是常用名的文件(本例中为 CHANGELOG.md)时,Git 实际上是在比较来自不同软件包的文件,因此每次提交都会发现很大的差异。 Stolee 向 Git 提交了一个 Pull 请求,添加了他所谓的 “path ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览