#版本控制 #控制系统 #仓库 #可扩展 #源代码 #分支 #用户友好

nightly facebookexperimental/mononoke_api

可扩展、用户友好的源代码控制系统

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日

#2 in #分支

5,557 星 & 72 关注者

GPLv2+ 许可证

510KB
12K 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

依赖项

~5–13MB
~142K SLoC