-
Notifications
You must be signed in to change notification settings - Fork 2
/
Commit.h
112 lines (94 loc) · 3.91 KB
/
Commit.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#ifndef COMMIT_H
#define COMMIT_H
#include "RepositoryDependant.h"
#include <string>
#include <ctime>
#include <vector>
#include <git2.h>
#include "libgit2wrapper_global.h"
namespace Git
{
/**
* @brief A Commit osztály egy DTO osztály a `git commit` paranccsal vagy
* azzal egyenértékűvel létrehozott objektumok reprezentálására.
*/
class LIBGIT2WRAPPERSHARED_EXPORT Commit : public Git::RepositoryDependant
{
private:
struct Signature
{
std::string name;
std::string email;
std::time_t when;
Signature(std::string _name="", std::string _email="", std::time_t _when=0) : name(_name)
, email(_email)
, when(_when)
{}
};
std::string sha;
std::string message;
Signature author;
Signature committer;
std::time_t commitDate;
std::vector<std::string> parentShas;
Commit::Signature getAuthor(const git_commit* commit) const;
Commit::Signature getCommitter(const git_commit* commit) const;
std::vector<std::string> getParentShas(const git_commit* commit) const;
std::unique_ptr< git_signature
, void(*)(git_signature*)
> getAuthorLibGitSignature(const git_commit* commit) const;
std::unique_ptr< git_signature
, void(*)(git_signature*)
> getCommitterLibGitSignature(const git_commit* commit) const;
public:
/**
* @brief Commit konstruktor
* @param _repositoryKey
* Teljes elérési út a commitot birtokló repositoryig.
* @param _sha
* A betöltendő commit teljes SHA kódja.
*
* Amennyiben a commit nem található a Git repositoryban invalid_argument exception váltódik ki. <BR>
* Ha a belső reprezentáció olvasása közben hiba történik LibGitException dobódhat.
*/
Commit(const std::string& _repositoryKey, const std::string& _sha);
/**
* @brief getSha Visszaadja a Commit SHA kódját.
* @return Teljes SHA kód.
*/
const std::string& getSha() const { return sha; }
/**
* @brief getMessage Visszaadja a commit üzenetet.
* @return Commit üzenet.
*
* @note Az utolsó karakter mindig egy új sor karakter.
*/
const std::string& getMessage() const { return message; }
/**
* @brief getAuthorName Visszaadja a commit szerzőjének nevét.
* @return Commit szerzőjének neve.
*/
const std::string& getAuthorName() const { return author.name; }
/**
* @brief getAuthorEmail Visszaadja a commit szerzőjének e-mail címét.
* @return Commit szerzőjének e-mail címe.
*/
const std::string& getAuthorEmail() const { return author.email; }
/**
* @brief getCommitterName Visszaadja annak a nevét, aki a commitot hozzáadta a repositoryhoz.
* @return Commit hozzáadójának neve.
*/
const std::string& getCommitterName() const { return committer.name; }
/**
* @brief getCommitterEmail Visszaadja annak az e-mail címét, aki a commitot hozzáadta a repositoryhoz.
* @return Commit hozzáadójának e-mail címe.
*/
const std::string& getCommitterEmail() const { return committer.email; }
/**
* @brief getCreationTime Visszaadja a commit utolsó módosításának időpontját.
* @return Commit utolsó módosításának időpontja.
*/
const std::time_t& getCreationTime() const { return commitDate; }
};
}
#endif //COMMIT_H