Управляет структурой директорий системы контроля версий и основными операциями.
Подробнее...
#include <Repository.hxx>
|
| | ~Repository () override |
| | Виртуальный деструктор.
|
| | Repository (std::filesystem::path rpath) |
| | Конструирует менеджер репозитория.
|
| void | initializeDependencies () |
| | Инициализирует внутренние зависимости репозитория.
|
| bool | init () |
| | Инициализирует базовую структуру репозитория (.svcs, objects, refs) на диске.
|
| bool | is_initialized () const |
| | Проверяет, полностью ли инициализирована и действительна структура репозитория.
|
| const std::filesystem::path & | getPath () const |
| | Получает корневой путь репозитория.
|
| ObjectStorage * | getObjectStorage () 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) |
| | Подготавливает файл, хешируя его содержимое, сохраняя его в базе данных объектов и обновляя индекс подготовки.
|
| virtual | ~ISubject ()=default |
| | Виртуальный деструктор.
|
|
| static std::shared_ptr< Repository > | findRepository (const std::string &start_path=".") |
| | Статически ищет существующий репозиторий, начиная с заданного пути и поднимаясь вверх.
|
| static bool | isRepository (const std::string &path) |
| | Статически проверяет, является ли заданный путь корнем репозитория SVCS.
|
|
|
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.
- Аргументы
-
- Возвращает
- 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 | если операции файловой системы или хранилища объектов завершаются неудачно. |
Объявления и описания членов классов находятся в файлах: