技术深度解析
Lore 的技术架构是对 Git 内容可寻址文件系统的彻底颠覆。其核心在于实现了一个自定义存储引擎,将二进制大对象(blob)的存储与元数据及历史图分离开来。这通过一个分层设计实现:
1. 对象存储层:负责文件内容的物理存储。与 Git 的 packfile 不同,Lore 使用一种针对大型二进制文件优化的分块、去重存储格式。文件根据内容定义的边界(使用滚动哈希算法,类似于 Borg backup 或 restic)被分割成可变大小的块(通常为 64KB 到 4MB)。这使得即使对于二进制文件,也能实现高效的增量压缩——例如,一个纹理编辑这样的小改动只会影响少数几个块。
2. 引用层:管理提交、分支和标签的有向无环图(DAG)。这一层非常轻量,可以与对象存储分开存放,从而实现部分克隆:开发者只需获取元数据和他们需要的特定块。
3. 协议层:Lore 使用一个自定义的基于 TCP 的协议(而非 Git 使用的 HTTP 或 SSH),专为低延迟、高吞吐量的传输而设计。该协议支持多路复用,允许在单个连接上传输多个文件,并内置了压缩和加密功能。它还支持元数据的增量之增量压缩,显著减少了拥有数百万次提交的仓库的历史记录大小。
一个关键的创新是 Lore 的工作区模型。与 Git 基于检出的工作流不同,Lore 使用一个虚拟文件系统(Linux/macOS 上基于 FUSE,Windows 上基于 Dokany)来呈现工作目录,而无需实际下载所有文件。开发者可以看到完整的目录树,但文件会在访问时按需获取。这类似于 Git LFS 的 smudge/clean 过滤器,但它是集成在 VCS 层面,而非作为一个附加组件。
性能基准测试(来自 Epic 的内部测试和早期社区报告):
| 操作 | Git (使用 LFS) | Git (未使用 LFS) | Lore |
|---|---|---|---|
| 克隆一个 50GB 的仓库(1000 个文件,平均 50MB) | 12-15 分钟 | 失败(内存溢出) | 45 秒 |
| 提交一个 2GB 的二进制文件 | 30 秒(LFS 上传) | 不适用 | 2.3 秒 |
| 检出一个 10GB 的文件子集 | 4 分钟 | 8 分钟 | 12 秒 |
| 10 万次提交的历史日志 | 8 秒 | 8 秒 | 0.4 秒 |
| 50GB 仓库的磁盘占用(工作副本) | 55 GB | 52 GB | 3.2 GB(虚拟) |
数据要点:对于大型二进制文件密集的仓库,Lore 在克隆和检出时间上实现了 10-100 倍的改进,并将工作副本的磁盘占用减少了 15 倍。这不是渐进式的改进——对于经常处理多 GB 级资产的团队来说,这是一次范式转变。
Lore 使用 Rust 编写,这一选择提供了内存安全性,同时没有垃圾回收的开销,这对于性能敏感的 VCS 操作至关重要。该项目在 GitHub 上以 `epicgames/lore` 提供,并已吸引了来自游戏开发社区的贡献,尽管代码库仍在快速演进中。
关键参与方与案例研究
Epic Games 是主要的开发者和赞助商。Lore 背后的团队包括来自 Perforce 和 Git LFS 生态系统的资深人士,以及来自 Epic 的 Unreal Engine 基础设施团队的工程师。Epic 的 CEO Tim Sweeney 曾公开表示“Git 从未为现代游戏开发的规模而设计”,将 Lore 定位为 Epic 工具链中的一项战略投资。
竞品解决方案:
| 产品 | 类型 | 优势 | 劣势 |
|---|---|---|---|
| Git + Git LFS | 开源 | 庞大的生态系统,CI/CD 集成,GitHub/GitLab 支持 | 二进制文件处理是附加的,性能随规模下降,需要 LFS 服务器 |
| Perforce Helix Core | 专有 | 游戏开发行业标准,出色的二进制处理能力,原子提交 | 许可费用昂贵,管理复杂,闭源 |
| Plastic SCM (Unity) | 专有 | 良好的 Unity 集成,按分支分配任务的工作流,图形化用户界面 | 被 Unity 收购,未来不确定,在 Unity 生态系统之外使用受限 |
| Mercurial + Largefiles | 开源 | 与 Git 类似但二进制支持更好 | 社区衰退,托管选项较少 |
| Fossil | 开源 | 内置错误追踪器、Wiki、单文件数据库 | 采用率有限,非为大型二进制文件设计 |
案例研究:Epic 内部使用
Epic 已在内部使用 Lore 超过两年,用于管理 Unreal Engine 仓库,该仓库包含超过 300GB 的源代码、资产和文档。在 Lore 之前,团队使用 Perforce,这需要一个专门的运维团队,并且每年在许可费用上花费超过 50 万美元。使用 Lore 后,Epic 报告称 CI/CD 流水线时间减少了 40%,由于去重,存储成本降低了 60%。
案例研究:早期采用者 - Studio X(匿名)
一家拥有 200 名开发者的中型游戏工作室,为其即将推出的开放世界游戏从 Git LFS 切换到了 Lore。他们报告称,克隆时间从 45 分钟缩短到不到 2 分钟,日常迭代中的检出时间从 5 分钟缩短到 15 秒。该工作室还注意到,由于 Lore 的按需文件获取,其 CI 服务器的存储需求减少了 70%。