Об этом проекте
gwz-core служит основой Rust-движка для системы Git Workspace Zone (GWZ), предназначенной для координации нескольких обычных Git-репозиториев в единое, воспроизводимое и проверяемое рабочее пространство. В отличие от инструментов командной строки, этот crate является встраиваемой библиотекой, которая обрабатывает сложную логику межрепозиторной политики и управления рабочим пространством за типизированной границей сервисных сообщений.
Архитектура ядра является транспорт-независимой, что означает, что оно не запускает сервер или демон самостоятельно. Вместо этого оно поддерживает гибкие схемы интеграции: локальные адаптеры могут вызывать движок напрямую в том же процессе, а удаленные адаптеры могут передавать те же типизированные операции с использованием детерминированного CBOR или JSON, основанного на схеме. Эта конструкция обеспечивает согласованность поведения рабочего пространства независимо от того, встроено ли оно в CLI, UI, агент или сервер.
Ключевые особенности включают типизированную границу сообщений, которая передает структурированные ошибки, метаданные операций и потоковые события. Система управляет артефактами рабочего пространства, такими как манифесты, блокировки, снимки и маркеры, через единую границу политики, сохраняя при этом теги как реальные Git-ссылки. Взаимодействие с Git изолировано за абстракцией `GitBackend`, причем реализация по умолчанию поддерживает локальные, SSH и HTTPS-репозитории. Это разделение позволяет клиентам использовать одну и ту же модель операций независимо от того, связан ли движок локально или размещен удаленно.
Разработчики могут использовать gwz-core для создания инструментов, требующих операций с рабочим пространством, без необходимости повторной реализации сложной межрепозиторной логики. Библиотека готова к использованию в CLI и UI, позволяя клиентам более высокого уровня напрямую использовать одни и те же обработчики. Документация охватывает модель продукта, руководства по встраиванию, детали протокола и сгенерированный каталог сообщений.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.