Meta开源自家的源码控制系统Sapling客户端,Sapling是与Git兼容源码控制系统,Meta强调,Sapling具备高可用性,可以支持全球最大的单体存储库。Meta目前仅先开源Sapling客户端,但预计接下来还会开源和Sapling兼容的虚拟文件系统,以及Sapling服务器。
源码控制已经成为现代开发人员最重要的工具,Git、GitHub和GitLab等工具已然成为整个软件产业的基础,而在Meta中,源码控制负责存储开发人员开发中的程序代码、历史记录,并提供程序代码服务,Meta提到,源码控制工具是他们快速开发产品的关键,因此投入许多资源进行改善。
在过去10年,Meta一直开发并发展自家的源码控制工具Sapling,现在Meta开源其客户端,使得任何开发者,都可以使用Sapling内置的Git支持来操作存储库。Sapling是Meta着重可用性和可扩展性的源码控制系统,许多操作概念与Git和Mercurial相似。
当Sapling客户端、服务器和虚拟文件系统共同运行时,Sapling可以服务数千万文件,并且负荷数千万次提交以及分支,在Meta主要是将Sapling用于处理大型单体存储库(Monorepo),但Sapling也支持复制,并且与其他Git存储库互动,也可供个人开发使用,与GitHub和GitLab等Git托管服务一起运行。
大型单体存储库正是Meta创建Sapling的原因,Meta表示,在10年前,任何公共源码控制系统,都无法处理他们的大型单体存储库,而他们也不愿意拆分存储库,因为会失去单体存储库所带来的好处,像是简化相依项目管理,以及快速进行大规模更新的能力。
原本Sapling是以Mercurial开源项目的扩展项目启动,但后来迅速发展出具有新存储格式、协议、算法和行为的独立系统。而在提高规模的同时,Meta还想要改善源码控制的实际体验,Meta提到,当前版本控制系统的可用性仍然不足,开发人员需要维护存储库复杂性,常需要以复杂的命令解决简单的问题。
Sapling则可以改善这些状况,其操作起来和Git的基本命令类似,用户可以复制存储库、提交、修改并推送程序代码至服务器,但是每一个命令都以简单易用为设计目标,每个命令只执行一件事,本地分支名称可选,且没有暂存区。