SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
Класс svcs::core::Repository

Управляет структурой директорий системы контроля версий и основными операциями. Подробнее...

#include <Repository.hxx>

Граф наследования:svcs::core::Repository:
svcs::services::ISubject

Открытые члены

 ~Repository () override
 Виртуальный деструктор.
 Repository (std::filesystem::path rpath)
 Конструирует менеджер репозитория.
void initializeDependencies ()
 Инициализирует внутренние зависимости репозитория.
bool init ()
 Инициализирует базовую структуру репозитория (.svcs, objects, refs) на диске.
bool is_initialized () const
 Проверяет, полностью ли инициализирована и действительна структура репозитория.
const std::filesystem::path & getPath () const
 Получает корневой путь репозитория.
ObjectStoragegetObjectStorage () const
 Получает сырой указатель на управляемый экземпляр ObjectStorage для взаимодействия с базой данных.
void attach (std::shared_ptr< IObserver > observer) override
 Прикрепляет наблюдателя для получения событий.
void detach (std::shared_ptr< IObserver > observer) override
 Отсоединяет зарегистрированного наблюдателя.
void notify (const Event &event) const override
 Уведомляет всех прикрепленных наблюдателей о событии.
bool stageFile (const std::string &path)
 Подготавливает файл, хешируя его содержимое, сохраняя его в базе данных объектов и обновляя индекс подготовки.
Открытые члены унаследованные от svcs::services::ISubject
virtual ~ISubject ()=default
 Виртуальный деструктор.

Открытые статические члены

static std::shared_ptr< RepositoryfindRepository (const std::string &start_path=".")
 Статически ищет существующий репозиторий, начиная с заданного пути и поднимаясь вверх.
static bool isRepository (const std::string &path)
 Статически проверяет, является ли заданный путь корнем репозитория SVCS.

Дополнительные унаследованные члены

Защищенные данные унаследованные от svcs::services::ISubject
std::vector< IObserver * > observers
 Коллекция зарегистрированных наблюдателей.

Подробное описание

Управляет структурой директорий системы контроля версий и основными операциями.

Реализует ISubject для работы в качестве издателя событий для основных операций СКВ.

Конструктор(ы)

◆ ~Repository()

svcs::core::Repository::~Repository ( )
override

Виртуальный деструктор.

Обеспечивает корректную очистку управляемых ресурсов (ObjectStorage).

◆ Repository()

svcs::core::Repository::Repository ( std::filesystem::path rpath)
explicit

Конструирует менеджер репозитория.

Аргументы
rpathКорневая директория репозитория.

Методы

◆ attach()

void svcs::core::Repository::attach ( std::shared_ptr< IObserver > observer)
overridevirtual

Прикрепляет наблюдателя для получения событий.

Аргументы
observerОбщий указатель на экземпляр наблюдателя.

Замещает svcs::services::ISubject.

◆ detach()

void svcs::core::Repository::detach ( std::shared_ptr< IObserver > observer)
overridevirtual

Отсоединяет зарегистрированного наблюдателя.

Аргументы
observerОбщий указатель на экземпляр наблюдателя для отсоединения.

Замещает svcs::services::ISubject.

◆ findRepository()

std::shared_ptr< Repository > svcs::core::Repository::findRepository ( const std::string & start_path = ".")
static

Статически ищет существующий репозиторий, начиная с заданного пути и поднимаясь вверх.

Аргументы
start_pathПуть директории, с которого начинать поиск (по умолчанию ".").
Возвращает
Общий указатель на найденный экземпляр Repository или nullptr, если ничего не найдено.

◆ getObjectStorage()

ObjectStorage * svcs::core::Repository::getObjectStorage ( ) const
inlinenodiscard

Получает сырой указатель на управляемый экземпляр ObjectStorage для взаимодействия с базой данных.

Возвращает
ObjectStorage* Указатель на управляемый экземпляр ObjectStorage.

◆ getPath()

const std::filesystem::path & svcs::core::Repository::getPath ( ) const
inlinenodiscard

Получает корневой путь репозитория.

Возвращает
const std::filesystem::path& Корневой путь репозитория.

◆ init()

bool svcs::core::Repository::init ( )

Инициализирует базовую структуру репозитория (.svcs, objects, refs) на диске.

Возвращает
bool True, если инициализация прошла успешно, false в противном случае.

◆ initializeDependencies()

void svcs::core::Repository::initializeDependencies ( )

Инициализирует внутренние зависимости репозитория.

Обычно это включает создание и настройку внутренних компонентов, таких как ObjectStorage.

◆ is_initialized()

bool svcs::core::Repository::is_initialized ( ) const
nodiscard

Проверяет, полностью ли инициализирована и действительна структура репозитория.

Возвращает
true, если все необходимые директории и файлы существуют.

◆ isRepository()

bool svcs::core::Repository::isRepository ( const std::string & path)
static

Статически проверяет, является ли заданный путь корнем репозитория SVCS.

Аргументы
pathПуть для проверки.
Возвращает
true, если путь содержит необходимые маркерные файлы/директории репозитория.

◆ notify()

void svcs::core::Repository::notify ( const Event & event) const
overridevirtual

Уведомляет всех прикрепленных наблюдателей о событии.

Аргументы
eventКонстантная ссылка на структуру данных события.

Замещает svcs::services::ISubject.

◆ stageFile()

bool svcs::core::Repository::stageFile ( const std::string & path)

Подготавливает файл, хешируя его содержимое, сохраняя его в базе данных объектов и обновляя индекс подготовки.

Аргументы
pathПуть к файлу для подготовки (относительно корня репозитория).
Возвращает
bool True, если файл успешно подготовлен, false в противном случае (например, файл проигнорирован, ошибка прав доступа).
Исключения
std::runtime_errorесли операции файловой системы или хранилища объектов завершаются неудачно.

Объявления и описания членов классов находятся в файлах: