Sapling SCM 是一个跨平台、高度可扩展、与 Git 兼容的源代码控制系统。
它旨在为用户提供用户友好且功能强大的界面,以及极高的可扩展性来处理包含数百万个文件和数百万个提交的存储库。
要开始使用 Sapling,请参阅入门页面,了解如何克隆现有的 Git 存储库。查看概述以了解各种功能。来自 Git?查看 Git 备忘单。
Sapling 还配备了交互式智能日志 (ISL) Web UI,用于查看存储库并与之交互,以及 VS Code 集成的交互式智能日志。
Sapling SCM 由三个主要组件组成:
sl
命令行和 Web 界面,供用户与 Sapling SCM 交互。Sapling SCM 的可扩展性目标是确保所有源代码控制操作随着开发人员使用的文件数量而扩展,而不是随着存储库本身的大小而扩展。即使在具有数百万个文件和极长提交历史记录的大型存储库中,这也能实现快速、高性能的开发人员体验。
Sapling CLI sl
最初基于 Mercurial,并共享 Mercurial UI 和功能的各个方面。
CLI 代码可以在eden/scm
子目录中找到。
Mononoke 是 Sapling SCM 的服务器端组件。
虽然它在 Meta 的生产中使用,但尚不支持外部使用。 GitHub Actions 中的 OSS 构建可用于不受支持的实验。
EdenFS 是一个用于管理 Sapling 结账的虚拟文件系统。
虽然它在 Meta 的生产中使用,但尚不支持外部使用。 GitHub Actions 中的 OSS 构建可用于不受支持的实验。
EdenFS 仅在访问时按需填充工作目录文件,从而加快大型存储库中的操作速度。这使得诸如checkout
类的操作变得更快,但在首次访问新文件时,性能会受到一点影响。这在大型存储库中非常有用,因为开发人员通常一次只使用存储库的一小部分。
更详细的 EdenFS 设计文档可以在 eden/fs/docs/Overview.md 中找到。
Sapling CLI 目前在 Linux、Mac 和 Windows 上构建和运行。它可以通过在eden/scm
目录中运行make oss
并运行生成的sl
可执行文件来构建。
构建 Sapling CLI 需要用于主 cli 的 Python 3.8、Rust、CMake 和 OpenSSL,以及用于 ISL Web UI 的 Node 和 Yarn。
您可以在 GitHub 上报告问题或加入 Discord
主要项目已获得 GPL-2.0 许可。
该网站和 ISL 已获得 MIT 许可。
库子项目(例如 minibytes)可能具有不同的许可证。有关详细信息,请参阅每个库中的LICENSE
文件和源代码标头。