SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
RemoteManager.hxx
См. документацию.
1
21#pragma once
22
23#include <string>
24#include <unordered_map>
25#include <vector>
26#include <filesystem>
27#include <functional>
28
39 * @namespace svcs::server
40 * @brief Серверные компоненты и команды администрирования.
41 * @details Содержит функциональность управления сервером, включая создание репозиториев-хабов,
42 * обработку удаленных протоколов, управление пользователями и команды администрирования сервера.
43 * Это пространство имен инкапсулирует все серверные операции, которые обеспечивают
44 * многопользовательское сотрудничество и хостинг удаленных репозиториев.
45 */
46namespace svcs::server {
47
48namespace fs = std::filesystem;
49
60 * @details Хранит имя, URL и спецификацию извлечения (refspec) для
61 * настроенного удаленного репозитория. Спецификация извлечения автоматически генерируется при создании.
62 */
63struct Remote {
71 std::string name;
72
80 std::string url;
81
89 std::string fetch_spec;
90
102 Remote(const std::string& name, const std::string& url) :
103 name(name), url(url), fetch_spec("+refs/heads/*:refs/remotes/" + name + "/*") {}
104};
105
121class RemoteManager {
122private:
130 std::unordered_map<std::string, Remote> remotes_;
131
139 fs::path config_path_;
140
141public:
149
157 explicit RemoteManager(const fs::path& repo_path);
158
174 bool addRemote(const std::string& name, const std::string& url);
175
187 bool removeRemote(const std::string& name);
188
200 bool hasRemote(const std::string& name) const;
201
213 std::string getRemoteUrl(const std::string& name) const;
214
224 std::vector<std::string> listRemotes() const;
225
237 void save() const;
238
250 void load();
251
261 size_t count() const { return remotes_.size(); }
262};
263
264}
void save() const
Сохраняет текущие конфигурации удаленных репозиториев обратно в файл конфигурации.
Определения RemoteManager.cxx:74
RemoteManager(const fs::path &repo_path)
Конструирует RemoteManager и загружает существующие удаленные репозитории.
Определения RemoteManager.cxx:24
bool hasRemote(const std::string &name) const
Проверяет, существует ли удаленный репозиторий с заданным именем.
Определения RemoteManager.cxx:54
std::string getRemoteUrl(const std::string &name) const
Получает URL настроенного удаленного репозитория.
Определения RemoteManager.cxx:58
std::vector< std::string > listRemotes() const
Перечисляет имена всех настроенных удаленных репозиториев.
Определения RemoteManager.cxx:66
void load()
Загружает (или перезагружает) конфигурации удаленных репозиториев из файла конфигурации.
Определения RemoteManager.cxx:88
size_t count() const
Получает количество настроенных удаленных репозиториев.
Определения RemoteManager.hxx:147
bool removeRemote(const std::string &name)
Удаляет конфигурацию удаленного репозитория по имени.
Определения RemoteManager.cxx:43
bool addRemote(const std::string &name, const std::string &url)
Добавляет новую конфигурацию удаленного репозитория.
Определения RemoteManager.cxx:29
Серверные компоненты и команды администрирования.
Remote(const std::string &name, const std::string &url)
Конструирует структуру Remote.
Определения RemoteManager.hxx:60
std::string name
Короткое имя удаленного репозитория (например, "origin").
Определения RemoteManager.hxx:43
std::string url
URL (путь или сетевой адрес) удаленного репозитория.
Определения RemoteManager.hxx:48
std::string fetch_spec
Refspec, определяющий что извлекать (например, "+refs/heads/*:refs/remotes/origin/*").
Определения RemoteManager.hxx:53