SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
MergeCommand.hxx
См. документацию.
1
13#pragma once
14
15#include "ICommand.hxx"
18
19#include <string>
20#include <vector>
21#include <memory>
22
34 * включая AddCommand, CommitCommand, StatusCommand и другие.
35 */
36namespace svcs::cli {
37
38using namespace svcs::core;
39using namespace svcs::services;
40
50class MergeCommand : public ICommand {
51public:
63 MergeCommand(std::shared_ptr<ISubject> event_bus,
64 std::shared_ptr<RepositoryManager> repo_manager);
65
73 ~MergeCommand() override = default;
74
75 // ICommand interface implementation
85 [[nodiscard]] std::string getName() const override;
86
96 [[nodiscard]] std::string getDescription() const override;
97
107 [[nodiscard]] std::string getUsage() const override;
108
120 bool execute(const std::vector<std::string>& args) override;
121
129 void showHelp() const override;
130
131private:
143 void debugBranchHistory(const std::string& branch_name, const std::string& head_commit) const;
144
150
156 bool mergeBranch(const std::string& branch_name) const;
157
167 bool abortMerge() const;
168
178 [[nodiscard]] bool isMergeInProgress() const;
179
193 std::string findCommonAncestor(const std::string& commit1, const std::string& commit2) const;
194
210 bool performThreeWayMerge(const std::string& ancestor,
211 const std::string& current,
212 const std::string& other) const;
213
231 static bool mergeFileContent(const std::string& ancestor_content,
232 const std::string& current_content,
233 const std::string& other_content,
234 std::string& merged_content);
235
236private:
244 std::shared_ptr<ISubject> event_bus_;
245
253 std::shared_ptr<RepositoryManager> repo_manager_;
254};
255
256}
Объявление интерфейса ICommand для всех исполняемых CLI команд.
Определяет интерфейс для компонента Subject (Издатель) шаблона Observer.
Declaration of the RepositoryManager class, managing all repository-level file operations.
Интерфейс (абстрактный базовый класс) для всех команд, выполняемых через CLI.
Определения ICommand.hxx:31
bool execute(const std::vector< std::string > &args) override
Выполняет команду merge с заданными аргументами.
Определения MergeCommand.cxx:37
std::string getName() const override
Получает имя команды.
Определения MergeCommand.cxx:25
std::string getDescription() const override
Получает описание команды.
Определения MergeCommand.cxx:29
MergeCommand(std::shared_ptr< ISubject > event_bus, std::shared_ptr< RepositoryManager > repo_manager)
Конструирует MergeCommand с шиной событий и менеджером репозитория.
Определения MergeCommand.cxx:20
void showHelp() const override
Отображает справочную информацию для команды.
Определения MergeCommand.cxx:73
~MergeCommand() override=default
Деструктор.
std::string getUsage() const override
Получает синтаксис использования команды.
Определения MergeCommand.cxx:33
Компоненты командной строки и реализации команд.
Основные структуры данных СКВ и модель объектов.
Компоненты сервисного слоя и инфраструктурные сервисы.