Skip to content

SYSTEM Cited by 1 source

Sapling-compatible Server

The Sapling-compatible server is the server-side counterpart of the Sapling client — a "scalable, distributed source control Rust service we use at Meta to serve Sapling and (soon) Git repositories." As of the 2022-11-15 announcement, it is not yet open-sourced. Post-quote: "we hope to open-source the Sapling-compatible server".

Role

Most of Sapling's scale features require the Sapling server to be fully effective. The announcement post enumerates:

  • Full lazy history download — the client fetches commits/trees/files on demand from a Sapling-aware server.
  • Segmented Changelog — specifically, the server side that builds and serves segment graphs.
  • Per-file history graphs"maintaining per-file history graphs that allow answering sl log FILE in less than a second, regardless of how old the file is." Server-side structure; does not exist on Git-backed repos.
  • Virtual file system — the VFS needs a server to fetch file contents on first access.
  • Commit Cloud — all commits auto-uploaded; sharing via commit hash.
  • Incremental monorepo migration"you can incrementally migrate repositories into (or out of) the monorepo, allowing you to experiment with monorepos before committing to them."
  • Future Git-serving"serve Sapling and (soon) Git repositories" — i.e. the Sapling server may evolve into a managed Git host on top of Meta's storage substrate.

Architecture (as disclosed)

  • Language: Rust.
  • Design: "scalable, distributed" (unspecified further).

The post does not disclose any of the following: deployment model (per-repo shards? multi-tenant?), storage backend, replication strategy, the wire protocol that talks to the Sapling client, or any operational telemetry at Meta scale.

Seen in

Last updated · 319 distilled / 1,201 read