67 const std::filesystem::path root_path;
76 std::unique_ptr<ObjectStorage> objects;
87 std::vector<std::weak_ptr<IObserver>> observers;
96 std::unique_ptr<Index> index;
119 explicit Repository(std::filesystem::path rpath);
163 [[nodiscard]]
const std::filesystem::path&
getPath()
const {
return root_path; }
185 void attach(std::shared_ptr<IObserver> observer)
override;
196 void detach(std::shared_ptr<IObserver> observer)
override;
207 void notify(
const Event& event)
const override;
220 static std::shared_ptr<Repository>
findRepository(
const std::string& start_path =
".");
Определяет интерфейс для компонента Subject (Издатель) шаблона Observer.
Определение структуры данных IndexEntry и структуры Index.
Управляет чтением, записью и жизненным циклом объектов СКВ на диске с использованием формата Git.
Управляет базой данных объектов системы контроля версий, включая сохранение и восстановление объектов...
Определения ObjectStorage.hxx:37
~Repository() override
Виртуальный деструктор.
Определения Repository.cxx:27
void detach(std::shared_ptr< IObserver > observer) override
Отсоединяет зарегистрированного наблюдателя.
Определения Repository.cxx:141
const std::filesystem::path & getPath() const
Получает корневой путь репозитория.
Определения Repository.hxx:95
ObjectStorage * getObjectStorage() const
Получает сырой указатель на управляемый экземпляр ObjectStorage для взаимодействия с базой данных.
Определения Repository.hxx:101
void notify(const Event &event) const override
Уведомляет всех прикрепленных наблюдателей о событии.
Определения Repository.cxx:153
void initializeDependencies()
Инициализирует внутренние зависимости репозитория.
Определения Repository.cxx:39
Repository(std::filesystem::path rpath)
Конструирует менеджер репозитория.
Определения Repository.cxx:32
bool stageFile(const std::string &path)
Подготавливает файл, хешируя его содержимое, сохраняя его в базе данных объектов и обновляя индекс по...
Определения Repository.cxx:209
static std::shared_ptr< Repository > findRepository(const std::string &start_path=".")
Статически ищет существующий репозиторий, начиная с заданного пути и поднимаясь вверх.
Определения Repository.cxx:166
bool is_initialized() const
Проверяет, полностью ли инициализирована и действительна структура репозитория.
Определения Repository.cxx:116
void attach(std::shared_ptr< IObserver > observer) override
Прикрепляет наблюдателя для получения событий.
Определения Repository.cxx:130
bool init()
Инициализирует базовую структуру репозитория (.svcs, objects, refs) на диске.
Определения Repository.cxx:45
static bool isRepository(const std::string &path)
Статически проверяет, является ли заданный путь корнем репозитория SVCS.
Определения Repository.cxx:194
Интерфейс Subject (Издатель) (Абстрактный Базовый Класс).
Определения ISubject.hxx:35
Основные структуры данных СКВ и модель объектов.