Hacker News | 📄 原文链接 | 2026-09-20 收录

只要重造 packfile,Git 也能跑在对象存储上

来源:tigrisdata.com — 102 分 · by evacchi

📋 概述

作者在 Tigris 上构建对象存储后端的 Git 服务器(objgit)时踩到了核心矛盾:Git 的 packfile 是为 mmap 与本地磁盘设计的,要从一个桶里取出单个对象,就得先猜字节区间,靠大量 Range 请求试探,仓库一大就完全不可用。他的解法是放弃在对象存储上模拟文件系统,自己发明一套面向对象存储、采用列式布局的 packfile 格式,让 Git 对象在语义上仍然保持 Git 对象,但存储形态对桶友好。文章给出了完整的性能分析,并用 push 与 clone 测试验证在生产级仓库规模下的效果,这也是他从"文件系统翻译层"转向新格式的原因。

🔑 核心要点

💡 金句

Git 把所有东西都存在对象里,那为什么不直接把它们作为对象存进对象存储呢?
← 返回 Hacker News 首页