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日

#35 in #可扩展

5,557 星 & 72 关注者

MIT 许可证

1MB
19K 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 网页 UI)。

许可协议

请参阅 LICENSE


lib.rs:

dag

源代码控制使用的提交图的基本构建块。

依赖关系

~4–15MB
~185K SLoC