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

Управляет всеми физическими операциями с файлами и директориями в репозитории SVCS. Подробнее...

#include <RepositoryManager.hxx>

Граф наследования:svcs::core::RepositoryManager:
svcs::test::server::MockRepositoryManager

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

 RepositoryManager (std::shared_ptr< ISubject > bus)
 Конструирует RepositoryManager.
void updateHead (const std::string &commit_hash) const
 Обновляет ссылку HEAD.
bool initializeRepository (const std::string &path, bool force=false)
 Инициализирует новый репозиторий SVCS по указанному пути.
bool isRepositoryInitialized (const std::string &path=".")
 Проверяет, инициализирован ли репозиторий SVCS по заданному пути или его родителям.
void updateBranchReference (const std::string &branchName, const std::string &commitHash) const
 Обновляет файл ссылки ветви хешем коммита.
std::filesystem::path getRepositoryPath () const
 Возвращает определенный корневой путь текущего активного репозитория.
bool addFileToStaging (const std::string &filePath)
 Пытается добавить файл в область подготовки (индекс).
std::string getHeadCommit () const
 Извлекает хеш текущего коммита HEAD в репозитории.
std::string createCommit (const std::string &message)
 Создает коммит из текущих подготовленных файлов.
void updateCommitReferences (const std::string &removedCommitHash, const std::string &newParentHash) const
 Обновляет ссылки коммитов при удалении коммита.
bool revertCommit (const std::string &commit_hash)
 Откатывает состояние репозитория к предыдущему коммиту.
std::optional< CommitInfogetCommitByHash (const std::string &commit_hash) const
 Извлекает структуру CommitInfo для заданного хеша коммита.
std::string getParentCommitHash (const std::string &commit_hash) const
 Извлекает хеш родительского коммита для заданного коммита.
bool restoreFilesFromCommit (const CommitInfo &commit) const
 Восстанавливает файлы рабочей директории до состояния, записанного в конкретном коммите.
bool clearStagingArea ()
 Очищает содержимое области подготовки (индекса).
bool saveStagedChanges (const std::string &message)
 Создает коммит из подготовленных изменений. (Удобный метод, часто используемый SaveCommand).
std::vector< std::string > getStagedFiles ()
 Извлекает список всех файлов, в настоящее время помеченных как подготовленные (индексированные).
std::vector< CommitInfogetCommitHistory () const
 Извлекает полную историю коммитов для текущей ветви.
std::vector< CommitInfogetBranchHistory (const std::string &branch_name) const
 Извлекает историю коммитов для конкретной ветви.
std::string getCurrentBranch () const
 Получает имя текущей ветви.
bool removeRepository (const std::filesystem::path &path) const
 Пытается рекурсивно удалить всю структуру репозитория SVCS (например, директорию .svcs) и ее содержимое.
bool branchExists (const std::string &branch_name) const
 Проверяет, существует ли ветвь.
std::string getBranchHead (const std::string &branch_name) const
 Получает головной коммит ветви.
std::string getFileContentAtCommit (const std::string &commit_hash, const std::string &file_path) const
 Получает содержимое файла в конкретном коммите.
std::vector< std::string > getCommitFiles (const std::string &commit_hash) const
 Получает все файлы, измененные в коммите.
void setMergeState (const std::string &branch_name, const std::string &commit_hash) const
 Устанавливает состояние слияния (для разрешения конфликтов).
void clearMergeState () const
 Очищает состояние слияния (после завершения/прерывания слияния).
bool isMergeInProgress () const
 Проверяет, выполняется ли слияние.
std::string getMergeBranch () const
 Получает ветвь, которая сливается.

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

static std::string generateCommitHash (const std::string &content)
 Генерирует хеш коммита из содержимого.

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

Управляет всеми физическими операциями с файлами и директориями в репозитории SVCS.

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

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

◆ RepositoryManager()

svcs::core::RepositoryManager::RepositoryManager ( std::shared_ptr< ISubject > bus)
explicit

Конструирует RepositoryManager.

Аргументы
busОбщий указатель на шину событий (ISubject) для связи.

Методы

◆ addFileToStaging()

bool svcs::core::RepositoryManager::addFileToStaging ( const std::string & filePath)

Пытается добавить файл в область подготовки (индекс).

Обычно это включает чтение файла и обновление состояния индекса.

Аргументы
filePathПуть к файлу для подготовки.
Возвращает
true, если файл успешно добавлен, false в противном случае.

◆ branchExists()

bool svcs::core::RepositoryManager::branchExists ( const std::string & branch_name) const

Проверяет, существует ли ветвь.

Аргументы
branch_nameИмя ветви для проверки.
Возвращает
true, если ветвь существует, false в противном случае.

◆ clearStagingArea()

bool svcs::core::RepositoryManager::clearStagingArea ( )

Очищает содержимое области подготовки (индекса).

Возвращает
true, если область подготовки успешно очищена, false в противном случае.

◆ createCommit()

std::string svcs::core::RepositoryManager::createCommit ( const std::string & message)

Создает коммит из текущих подготовленных файлов.

Аргументы
messageСообщение коммита, предоставленное пользователем.
Возвращает
Хеш вновь созданного коммита при успехе, пустая строка в противном случае.

◆ generateCommitHash()

std::string svcs::core::RepositoryManager::generateCommitHash ( const std::string & content)
static

Генерирует хеш коммита из содержимого.

Аргументы
contentСодержимое для хеширования.
Возвращает
Сгенерированный хеш коммита.

◆ getBranchHead()

std::string svcs::core::RepositoryManager::getBranchHead ( const std::string & branch_name) const

Получает головной коммит ветви.

Аргументы
branch_nameИмя ветви.
Возвращает
Хеш коммита головы ветви.

◆ getBranchHistory()

std::vector< CommitInfo > svcs::core::RepositoryManager::getBranchHistory ( const std::string & branch_name) const

Извлекает историю коммитов для конкретной ветви.

Аргументы
branch_nameИмя ветви.
Возвращает
Вектор объектов CommitInfo для ветви.

◆ getCommitByHash()

std::optional< CommitInfo > svcs::core::RepositoryManager::getCommitByHash ( const std::string & commit_hash) const

Извлекает структуру CommitInfo для заданного хеша коммита.

Аргументы
commit_hashХеш коммита для извлечения.
Возвращает
Опциональный объект, содержащий CommitInfo, если найден, или std::nullopt в противном случае.

◆ getCommitFiles()

std::vector< std::string > svcs::core::RepositoryManager::getCommitFiles ( const std::string & commit_hash) const

Получает все файлы, измененные в коммите.

Аргументы
commit_hashХеш коммита.
Возвращает
Вектор путей к файлам.

◆ getCommitHistory()

std::vector< CommitInfo > svcs::core::RepositoryManager::getCommitHistory ( ) const

Извлекает полную историю коммитов для текущей ветви.

Возвращает
Вектор объектов CommitInfo, представляющих историю коммитов, обычно от самых новых к старым.

◆ getCurrentBranch()

std::string svcs::core::RepositoryManager::getCurrentBranch ( ) const

Получает имя текущей ветви.

Возвращает
Имя текущей ветви.

◆ getFileContentAtCommit()

std::string svcs::core::RepositoryManager::getFileContentAtCommit ( const std::string & commit_hash,
const std::string & file_path ) const

Получает содержимое файла в конкретном коммите.

Аргументы
commit_hashХеш коммита.
file_pathПуть к файлу.
Возвращает
Содержимое файла.

◆ getHeadCommit()

std::string svcs::core::RepositoryManager::getHeadCommit ( ) const

Извлекает хеш текущего коммита HEAD в репозитории.

Возвращает
Строка хеша коммита.

◆ getMergeBranch()

std::string svcs::core::RepositoryManager::getMergeBranch ( ) const

Получает ветвь, которая сливается.

Возвращает
Имя ветви, если слияние выполняется, пустая строка в противном случае.

◆ getParentCommitHash()

std::string svcs::core::RepositoryManager::getParentCommitHash ( const std::string & commit_hash) const

Извлекает хеш родительского коммита для заданного коммита.

Аргументы
commit_hashХеш дочернего коммита.
Возвращает
Строка хеша родительского коммита (пустая, если это начальный коммит).

◆ getRepositoryPath()

std::filesystem::path svcs::core::RepositoryManager::getRepositoryPath ( ) const
nodiscard

Возвращает определенный корневой путь текущего активного репозитория.

Возвращает
Строковый путь к корню репозитория.

◆ getStagedFiles()

std::vector< std::string > svcs::core::RepositoryManager::getStagedFiles ( )

Извлекает список всех файлов, в настоящее время помеченных как подготовленные (индексированные).

Возвращает
Вектор строк, содержащий пути к файлам в области подготовки.

◆ initializeRepository()

bool svcs::core::RepositoryManager::initializeRepository ( const std::string & path,
bool force = false )

Инициализирует новый репозиторий SVCS по указанному пути.

Создает необходимые внутренние директории и файлы (например, .svcs/).

Аргументы
pathПуть директории, где должен быть создан репозиторий.
forceЕсли true, принудительно инициализирует, даже если директория существует (зависит от реализации).
Возвращает
true, если инициализация прошла успешно, false в противном случае.

◆ isMergeInProgress()

bool svcs::core::RepositoryManager::isMergeInProgress ( ) const

Проверяет, выполняется ли слияние.

Возвращает
true, если слияние выполняется, false в противном случае.

◆ isRepositoryInitialized()

bool svcs::core::RepositoryManager::isRepositoryInitialized ( const std::string & path = ".")

Проверяет, инициализирован ли репозиторий SVCS по заданному пути или его родителям.

Аргументы
pathПуть, с которого начинать поиск (по умолчанию текущая директория ".").
Возвращает
true, если найдена структура репозитория, false в противном случае.

◆ removeRepository()

bool svcs::core::RepositoryManager::removeRepository ( const std::filesystem::path & path) const

Пытается рекурсивно удалить всю структуру репозитория SVCS (например, директорию .svcs) и ее содержимое.

Аргументы
pathКорневой путь удаляемого репозитория.
Возвращает
true, если удаление прошло успешно, false в противном случае.

◆ restoreFilesFromCommit()

bool svcs::core::RepositoryManager::restoreFilesFromCommit ( const CommitInfo & commit) const

Восстанавливает файлы рабочей директории до состояния, записанного в конкретном коммите.

Аргументы
commitСтруктура CommitInfo, представляющая целевое состояние.
Возвращает
true, если файлы успешно восстановлены, false в противном случае.

◆ revertCommit()

bool svcs::core::RepositoryManager::revertCommit ( const std::string & commit_hash)

Откатывает состояние репозитория к предыдущему коммиту.

Обычно используется для отмены эффектов предыдущего 'save' (коммита).

Аргументы
commit_hashХеш коммита, к которому нужно откатиться (или коммита перед тем, который нужно отменить).
Возвращает
true, если откат прошел успешно, false в противном случае.

◆ saveStagedChanges()

bool svcs::core::RepositoryManager::saveStagedChanges ( const std::string & message)

Создает коммит из подготовленных изменений. (Удобный метод, часто используемый SaveCommand).

Аргументы
messageСообщение коммита.
Возвращает
true, если сохранение (коммит) прошло успешно, false в противном случае.

◆ setMergeState()

void svcs::core::RepositoryManager::setMergeState ( const std::string & branch_name,
const std::string & commit_hash ) const

Устанавливает состояние слияния (для разрешения конфликтов).

Аргументы
branch_nameВетвь, которая сливается.
commit_hashКоммит, который сливается.

◆ updateBranchReference()

void svcs::core::RepositoryManager::updateBranchReference ( const std::string & branchName,
const std::string & commitHash ) const

Обновляет файл ссылки ветви хешем коммита.

Аргументы
branchNameИмя ветви для обновления.
commitHashХеш коммита для установки в качестве головы ветви.

◆ updateCommitReferences()

void svcs::core::RepositoryManager::updateCommitReferences ( const std::string & removedCommitHash,
const std::string & newParentHash ) const

Обновляет ссылки коммитов при удалении коммита.

Аргументы
removedCommitHashХеш удаляемого коммита.
newParentHashНовый хеш родителя для зависимых коммитов.

◆ updateHead()

void svcs::core::RepositoryManager::updateHead ( const std::string & commit_hash) const

Обновляет ссылку HEAD.

Аргументы
commit_hashХеш коммита для установки в качестве HEAD.

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