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日 |
#581 in 网络编程
5,557 星 & 72 关注者
115KB
3K SLoC
Sapling SCM
Sapling SCM 是一个跨平台、高度可扩展、与 Git 兼容的源代码控制系统。
它旨在为用户提供既友好又强大的界面,以及处理包含数百万个文件和数百万次提交的存储库的极端可扩展性。
使用 Sapling
要开始使用 Sapling,请参阅 入门 页面了解如何克隆现有的 Git 仓库。查看 概述 了解各种功能。来自 Git?查看 Git 快速参考。
Sapling 还提供了一种交互式智能日志(ISL) Web UI,用于查看和与您的代码库交互,以及 VS Code 集成交互式智能日志。
Sapling 生态系统
Sapling SCM 由三个主要组件组成
- Sapling 客户端:用户与 Sapling SCM 交互的客户端
sl
命令行和 Web 界面。 - 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。
lib.rs
:
Mercurial 命令协议
Mercurial 在至少两种协议(SSH 和 HTTP)中实现了一系列命令。此模块定义了表示这些协议请求和响应的枚举,并通过一个特例提供 Tokio Service 框架。
依赖关系
~6–13MB
~142K SLoC