Sapling — система управления исходным кодом, совместимая с Git.

деревце

Sapling делает упор на простоту использования при масштабировании до крупнейших репозиториев мира.

Представлен Facebook через публикацию в блоге системы управления исходным кодом деревце используется при разработке внутренних проектов компании. Система направлен на предоставление интерфейса управления версиями знакомый, который может масштабироваться до очень больших репозиториев, охватывающих десятки миллионов файлов, коммитов и ветвей.

Основная идея системы заключается в том, что, взаимодействуя со специальной частью сервера, обеспечивающей хранение репозитория, все операции масштабируются в зависимости от количества файлов фактически используются в коде, над которым работает разработчик, и не зависят от общего размера всего репозитория.

Например, разработчик может использовать только небольшую часть кода из очень большого репозитория, и только эта небольшая часть, а не весь репозиторий, будет передана в его систему. Рабочий каталог заполняется динамически, по мере обращения к файлам репозитория, что, с одной стороны, позволяет значительно ускорить работу со своей частью кода, но с другой стороны, замедляет ее при обращении к нему за в первый раз к новым файлам и требует постоянного доступа к сети (предусматривается отдельно и офлайн-режим подготовки).

Помимо адаптивной загрузки данных, Также в Sapling реализованы оптимизации, направленные на снижение информационной нагрузки с историей изменений. (например, 3/4 данных в репозитории с ядром Linux — это история изменений).

Для эффективной работы с историей изменений связанные с ней данные хранятся в сегментированном представлении, что позволяет загружать с сервера отдельные части графа коммитов. Клиент может запросить у сервера информацию о взаимосвязи нескольких подтверждений и загрузить только необходимую часть графа.

Проект находится в разработке последние 10 лет и был создан для решения проблем при доступе к очень большим монолитным репозиториям с веткой master, где практиковалась практика использования операции «rebase» вместо «merge».

В то время не было открытых решений для работы с такими репозиториями, и инженеры Facebook решили создать новую систему контроля версий, отвечающую потребностям компании, а не дробить проекты на маленькие репозитории, что привело бы к более сложному управлению зависимостями ( в свое время для решения аналогичной проблемы Microsoft создал слой GVFS).

Изначально Facebook использовал систему Mercurial. а проект Sapling изначально разрабатывался как дополнение к Mercurial. Со временем система стала самостоятельным проектом со своим протоколом, форматом хранения и алгоритмами, который также был расширен возможностью взаимодействия с репозиториями Git.

Для работы, предлагается утилита командной строки "sl", который реализует типичные концепции, рабочие процессы и интерфейс, знакомый разработчикам, знакомым с Git и Mercurial. Терминология и команды в Sapling немного отличаются от Git и ближе к Mercurial.

Среди дополнительных возможностей саженца, подчеркивает поддержка «умной регистрации» (smartlog), который позволяет визуально оценить состояние вашего репозитория, выделить самую важную информацию и отфильтровать второстепенные детали. Например, при запуске утилиты sl без аргументов отображаются только ваши локальные изменения (чужие свернуты), отображается статус внешних веток, измененные файлы и новые версии коммитов. Кроме того, предусмотрен интерактивный веб-интерфейс для быстрой навигации по интеллектуальному журналу, дереву изменений и коммитам.

Еще одним заметным улучшением в Sapling является то, что это значительно упрощает процесс исправления и анализа ошибок и возврата к предыдущему состоянию. Например, команды «sl undo», «sl redo», «sl uncommit» и «sl unmend» предлагаются для отмены многих операций, «sl hide» и «sl unhide» — для временного скрытия коммитов и для интерактивной навигации. Sapling также поддерживает концепцию стека коммитов, которая позволяет организовать обзор шаг за шагом, разбивая сложную функциональность на меньший, более понятный пошаговый набор изменений (от базового фреймворка до финальной фичи).

По отдельности, разработана серверная часть для эффективной удаленной работы с репозиториями и виртуальная файловая система для работы с локальной частью части репозитория, как если бы это был полный репозиторий (разработчик видит репозиторий целиком, но в локальную систему копируются только запрошенные данные, к которым осуществляется доступ).

Код этих компонентов, используемых в инфраструктуре Facebook, пока не открыт, но компания пообещала выпустить его в будущем. Однако прототипы сервера Mononoke (на Rust) и VFS EdenFS (на C++) уже можно найти в репозитории Sapling. Эти компоненты являются необязательными, и для работы достаточно клиента Sapling, который поддерживает клонирование репозиториев Git, взаимодействие с серверами на основе Git LFS и работу с хостами git, такими как GitHub.

Для Sapling подготовлено несколько плагинов, включая интерфейс ReviewStack для просмотра изменений (код под лицензией GPLv2), который позволяет обрабатывать запросы на вытягивание на GitHub и использовать представление стека изменений.

Если вы хотите узнать больше об этом, вы можете ознакомиться с деталями По следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.