Anthropic 在 10 月 13 日发布的工程文章中详细介绍了如何将其单体代码仓库从 Git 迁移至自研服务器端源代码管理系统 Scion。该系统将提交、合并、变基、历史记录和代码追溯查询都放在服务器端执行,客户端只维护容量受限的对象缓存,虚拟化检出按需实体化文件,以内容寻址存储和分层缓存支撑智能体与 CI 工作负载。
规模压力是迁移的直接动因。Anthropic 单体代码仓库单日合并变更数从 5 月的约 2500 个增长到 9 月的 3 万多个,CI 系统每天大约执行 2500 万次检出,主分支历史记录接近 100GB,压缩后的工作副本也超过 25GB。此前使用的浅克隆、稀疏检出、Promisor Remote、仓库快照以及数百个 Git 镜像,随着合并频率提高,运维难度越来越大。
Scion 的变更集记录相对于第一个父变更集发生变化的文件,并用内容寻址指针引用 Blob 存储中经过压缩的文件内容;创建变更集与更新引用彼此分离,接收变更集无需跨服务器协调。历史记录和代码追溯查询依赖名为“派生数据”的附加结构,可提前或按需生成,且因实现位于服务端而能独立演进。检出时客户端直接请求缺失的不可变树和 Blob,节点本地守护进程在任务间共享缓存,区域缓存再向由 Spanner 和云存储支持的权威服务器取数。
Anthropic 报告称,各层缓存命中率均超过 99%,CPU 和内存基础设施占用仅为此前 Git 镜像的二百分之一,CI 与研究任务的检出速度提升两个数量级。这些结果基于其内部工作负载得出,并非与 Git 对比的通用基准测试。Anthropic 同时提醒,Scion 并非通用 Git 替代品,需要配套高度定制的代码审查、代码搜索和 CI 系统,其设计也建立在 Mononoke 及 Bonsai 数据模型等已有成果之上。
扫码查看视频号
咨询
咨询