SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
Index.hxx
См. документацию.
1
13#pragma once
14
16
17#include <filesystem>
18#include <string>
19#include <map>
20
32 * которые формируют строительные блоки системы контроля версий.
33 */
34namespace svcs::core {
35
36namespace fs = std::filesystem;
37
49struct IndexEntry {
53
57 std::string blob_hash;
58
60 * @english
61 * @brief The file's path, relative to the repository's root directory.
62 *
63 * @russian
64 * @brief Путь к файлу относительно корневой директории репозитория.
65 */
66 fs::path file_path;
67
75 fs::file_time_type last_modified;
76
84 long long file_size = 0;
85};
86
100class Index {
101private:
109 std::map<fs::path, IndexEntry> entries;
110
118 fs::path index_file_path;
119
127 fs::path repo_root_path;
128
136 ObjectStorage& storage_;
137
151 static void getFileMetaData(const fs::path& full_path,
152 long long& size, fs::file_time_type& mtime);
153
154public:
159
168 Index(const fs::path& vcs_root_path, fs::path repo_root_path, ObjectStorage& storage);
169
177 ~Index();
178
188 void addEntry(const IndexEntry& entry);
189
201 [[nodiscard]] const IndexEntry* getEntry(const fs::path& file_path) const;
202
212 void load();
213
223 void save() const;
224
234 [[nodiscard]] bool write() const;
235
247 [[nodiscard]] bool isFileModified(const fs::path& file_path) const;
248
262 void stage_file(const fs::path& relative_path);
263
277 std::string createTreeObject();
278};
279
280}
Управляет чтением, записью и жизненным циклом объектов СКВ на диске с использованием формата Git.
Управляет областью подготовки (Index) репозитория СКВ.
Определения Index.hxx:60
bool isFileModified(const fs::path &file_path) const
Проверяет, был ли файл в рабочей директории изменен с момента последней подготовки.
Определения Index.cxx:100
std::string createTreeObject()
Создает иерархическую структуру Tree на основе текущих подготовленных записей и сохраняет объекты Tre...
Определения Index.cxx:249
void stage_file(const fs::path &relative_path)
Подготавливает файл, создавая объект Blob, сохраняя его в хранилище и обновляя запись Index (Основная...
Определения Index.cxx:67
void save() const
Сохраняет текущее состояние записей индекса в файл индекса (временный текстовый формат).
Определения Index.cxx:152
Index(const fs::path &vcs_root_path, fs::path repo_root_path, ObjectStorage &storage)
Конструирует менеджер Index, настраивая пути и загружая индекс.
Определения Index.cxx:45
const IndexEntry * getEntry(const fs::path &file_path) const
Извлекает запись из индекса по относительному пути файла.
Определения Index.cxx:59
void addEntry(const IndexEntry &entry)
Добавляет или обновляет запись в области подготовки.
Определения Index.cxx:55
~Index()
Деструктор.
bool write() const
Еще одна функция сохранения (как load), но возвращает bool.
Определения Index.cxx:220
void load()
Загружает записи индекса из файла индекса на диске (временный текстовый формат).
Определения Index.cxx:174
Управляет базой данных объектов системы контроля версий, включая сохранение и восстановление объектов...
Определения ObjectStorage.hxx:37
Основные структуры данных СКВ и модель объектов.
Представляет одну запись файла в области подготовки (Index).
Определения Index.hxx:32
long long file_size
Размер файла в байтах.
Определения Index.hxx:51
fs::path file_path
Путь к файлу относительно корневой директории репозитория.
Определения Index.hxx:41
fs::file_time_type last_modified
Время последнего изменения файла, используется для обнаружения изменений.
Определения Index.hxx:46
std::string blob_hash
Хеш SHA-256 содержимого файла (ID объекта Blob).
Определения Index.hxx:36