14 个版本

0.2.20240116-133042+8acec…2024年1月16日
0.2.20231113-145254+995db…2023年11月13日
0.2.20230426-145232+7ea1f…2023年4月26日
0.2.20230330-193452-h6969…2023年3月31日
0.1.20221118-210929-cfbb6…2022年11月19日

#3 in #sapling

5,557 stars & 72 watchers

GPLv2+ 许可证

71KB
2K SLoC

Sapling SCM

Sapling SCM 是一个跨平台、高度可扩展、兼容 Git 的源代码控制系统。

它旨在为用户提供既友好又强大的接口,同时提供极致的可扩展性,以处理包含数百万个文件和数百万次提交的仓库。

使用 Sapling

要开始使用 Sapling,请参阅 入门 页面了解如何克隆现有的 Git 仓库。查看 概述 了解各种功能。来自 Git?请查看 Git 操练场

Sapling 还附带一个 交互式智能日志 (ISL) 网页界面,用于查看和交互仓库,以及 VS Code 集成的交互式智能日志。

Sapling 生态系统

Sapling SCM 由三个主要组件组成

  • Sapling 客户端:用户与 Sapling SCM 交互的客户端 sl 命令行和网页界面。
  • Mononoke:一个高度可扩展的分布式源代码控制服务器。(尚未公开支持。)
  • EdenFS:一个用于高效检出大型存储库的虚拟文件系统。(尚未公开支持。)

Sapling SCM的可扩展性目标是确保所有源代码控制操作都随着开发者使用的文件数量而扩展,而不是随着存储库本身的尺寸而扩展。这使得即使在包含数百万个文件和极其长的提交历史的庞大存储库中,也能实现快速、高性能的开发者体验。

Sapling CLI

Sapling CLI,sl,最初基于Mercurial,并与Mercurial共享UI的各个方面和功能。

CLI代码位于eden/scm子目录中。

Mononoke

Mononoke是Sapling SCM的服务端组件。

虽然它在Meta的生产环境中使用,但目前它不能在开源环境中构建,并且尚未支持外部使用。

EdenFS

EdenFS是用于管理Sapling检出的虚拟文件系统。

虽然它在Meta的生产环境中使用,但目前它不能在开源环境中构建,并且尚未支持外部使用。

EdenFS通过仅在需要时填充工作目录文件来加速大型存储库中的操作,正如它们被访问时一样。这使得像checkout这样的操作变得更快,但首次访问新文件时会有轻微的性能损失。这在大型存储库中非常有用,因为在任何给定时间,开发者通常只与存储库的一小部分进行交互。

更详细的EdenFS设计文档可以在eden/fs/docs/Overview.md找到。

构建Sapling CLI

Sapling CLI目前可以在Linux、Mac和Windows上构建和运行。可以在eden/scm目录中运行make oss来构建,并运行生成的sl可执行文件。

构建Sapling CLI需要Python 3.8、Rust、CMake和OpenSSL用于主CLI,以及Node和Yarn用于ISL Web UI。

许可证

请参阅LICENSE

依赖项

~1.3–2MB
~40K SLoC