SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
Commit.hxx
См. документацию.
1
17#pragma once
18
19#include "VcsObject.hxx"
20
21#include <string>
22#include <vector>
23#include <ctime>
24
32 * @russian
33 * @namespace svcs::core
34 * @brief Основные структуры данных СКВ и модель объектов.
35 * @details Содержит фундаментальные типы объектов СКВ, такие как Blob, Tree, Commit,
36 * которые формируют строительные блоки системы контроля версий.
37 */
38namespace svcs::core {
39
51class Commit : public VcsObject {
52private:
60 std::string tree_hash;
61
69 std::vector<std::string> parent_hashes;
70
78 std::string author;
79
87 std::time_t timestamp;
88
96 std::string message;
97
98public:
106 Commit() : tree_hash(""), parent_hashes({}), author(""), timestamp(time_t()), message("") {};
107
127 Commit(
128 std::string thash,
129 std::vector<std::string> phashes,
130 std::string auth,
131 std::string msg,
132 std::time_t tstamp = std::time(nullptr)
133 );
134
135 // VcsObject overrides
136
147 [[nodiscard]] std::string getType() const override;
148
159
161 [[nodiscard]] std::string serialize() const override;
162
174 static Commit deserialize(const std::string& raw_content);
175
176 // Getters
177
187 [[nodiscard]] const std::string& getTreeHash() const;
188
198 [[nodiscard]] const std::vector<std::string>& getParentHashes() const;
199
209 [[nodiscard]] const std::string& getAuthor() const;
210
220 [[nodiscard]] std::time_t getTimestamp() const;
221
231 [[nodiscard]] const std::string& getMessage() const;
232
242 void setMessage(const std::string& msg);
243
253 void setTimestamp(std::time_t tstamp);
254
262 void setTimestampNow();
263
273 void setParent(const std::string& parent);
274};
275
276}
Определение абстрактного базового класса для всех объектов системы контроля версий.
std::time_t getTimestamp() const
Возвращает UNIX временную метку создания коммита.
Определения Commit.cxx:172
std::string getType() const override
Возвращает тип объекта СКВ.
Определения Commit.cxx:42
std::string serialize() const override
Сериализует метаданные Commit в стандартизированный канонический формат для хеширования и хранения.
Определения Commit.cxx:46
const std::string & getMessage() const
Возвращает пользовательское сообщение коммита.
Определения Commit.cxx:176
const std::string & getTreeHash() const
Возвращает хеш ID связанного корневого объекта Tree.
Определения Commit.cxx:160
void setTimestamp(std::time_t tstamp)
Устанавливает временную метку коммита.
Определения Commit.cxx:187
void setMessage(const std::string &msg)
Устанавливает сообщение коммита.
Определения Commit.cxx:180
const std::vector< std::string > & getParentHashes() const
Возвращает хеш ID родительских коммитов.
Определения Commit.cxx:164
static Commit deserialize(const std::string &raw_content)
Создает объект Commit из сериализованной строки, прочитанной из базы данных объектов.
Определения Commit.cxx:63
void setTimestampNow()
Устанавливает временную метку коммита на текущее время.
Определения Commit.cxx:191
void setParent(const std::string &parent)
Устанавливает хеш родительского коммита.
Определения Commit.cxx:195
Commit()
Конструктор по умолчанию.
Определения Commit.hxx:63
const std::string & getAuthor() const
Возвращает строку автора и email для коммита.
Определения Commit.cxx:168
VcsObject()=default
Конструктор по умолчанию. Требуется для производных классов.
Основные структуры данных СКВ и модель объектов.