29#include <unordered_map>
206 bool deleteBranch(
const std::string& name,
bool force =
false);
221 bool renameBranch(
const std::string& old_name,
const std::string& new_name);
277 bool updateBranchHead(
const std::string& branch_name,
const std::string& commit_hash);
303 std::string
getBranchHead(
const std::string& branch_name)
const;
331 static bool commitExists(
const std::string& commit_hash);
365 static void saveBranchToFile(
const std::string &branch_name,
const std::string &commit_hash);
376 static void deleteBranchFile(
const std::string &branch_name);
385 void loadCurrentBranch();
396 bool saveCurrentBranch()
const;
411 static std::string readFile(
const std::string& path);
424 static void writeFile(
const std::string& path,
const std::string& content);
437 static bool fileExists(
const std::string& path);
448 static void createDirectory(
const std::string& path);
461 static std::string getBranchesFilePath();
472 static std::string getHeadFilePath();
483 static std::string getBranchesDirectory();
492 std::unordered_map<std::string, Branch> branches;
501 std::string current_branch;
510 std::shared_ptr<ISubject> event_bus;
Определяет интерфейс для компонента Subject (Издатель) шаблона Observer.
std::string getBranchHead(const std::string &branch_name) const
Извлекает хеш коммита, на который указывает конкретная ветвь.
Определения BranchManager.cxx:273
bool renameBranch(const std::string &old_name, const std::string &new_name)
Переименовывает существующую ветвь.
Определения BranchManager.cxx:137
BranchManager(std::shared_ptr< ISubject > event_bus)
Конструирует BranchManager.
Определения BranchManager.cxx:21
static bool isValidBranchName(const std::string &name)
Проверяет, является ли заданная строка допустимым именем для новой ветви.
Определения BranchManager.cxx:290
std::vector< Branch > getAllBranches() const
Извлекает список всех известных ветвей, включая их состояние.
Определения BranchManager.cxx:233
bool createBranchFromCommit(const std::string &name, const std::string &commit_hash)
Создает новую ветвь из определенного коммита.
Определения BranchManager.cxx:56
bool branchExists(const std::string &name) const
Проверяет, существует ли ветвь с заданным именем.
Определения BranchManager.cxx:269
std::string getCurrentBranch() const
Извлекает имя текущей активной ветви.
Определения BranchManager.cxx:265
std::string getHeadCommit()
Получает хеш коммита текущего HEAD.
Определения BranchManager.cxx:249
void createDefaultBranches()
Создает начальный набор ветвей по умолчанию (например, 'main').
Определения BranchManager.cxx:32
static bool commitExists(const std::string &commit_hash)
Проверяет, существует ли коммит (реализация, предположительно, проверяет хранилище объектов).
Определения BranchManager.cxx:313
bool deleteBranch(const std::string &name, bool force=false)
Удаляет существующую ветвь.
Определения BranchManager.cxx:104
bool switchBranch(const std::string &name)
Переключает активную ветвь на указанное имя.
Определения BranchManager.cxx:214
bool updateBranchHead(const std::string &branch_name, const std::string &commit_hash)
Обновляет хеш коммита, на который указывает указанная ветвь.
Определения BranchManager.cxx:191
bool createBranch(const std::string &name)
Создает новую ветвь, указывающую на определенный коммит (обычно HEAD).
Определения BranchManager.cxx:43
Основные структуры данных СКВ и модель объектов.
Компоненты сервисного слоя и инфраструктурные сервисы.
Branch()
Конструктор по умолчанию
Определения BranchManager.hxx:68
std::string head_commit
Хеш последнего коммита в этой ветви.
Определения BranchManager.hxx:58
bool is_current
Флаг, указывающий, является ли это текущей активной ветвью.
Определения BranchManager.hxx:63
std::string name
Уникальное имя ветви.
Определения BranchManager.hxx:53