git2wrap

C++20 wrapper for libgit2
git clone git://git.dimitrijedobrota.com/git2wrap.git
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING

commit.cpp (2271B)


0 #include "git2wrap/commit.hpp"
2 #include "git2wrap/buf.hpp"
3 #include "git2wrap/error.hpp"
4 #include "git2wrap/signature.hpp"
6 namespace git2wrap
7 {
9 commit::commit(git_commit* cmt, repositoryPtr repo)
10 : m_commit(cmt, git_commit_free)
11 , m_repo(std::move(repo))
12 {
13 }
15 commit commit::dup() const
16 {
17 git_commit* cmt = nullptr;
18 git_commit_dup(&cmt, m_commit.get());
19 return {cmt, m_repo};
20 }
22 oid commit::get_id() const
23 {
24 return oid(git_commit_id(m_commit.get()));
25 }
27 const char* commit::get_summary() const
28 {
29 return git_commit_summary(m_commit.get());
30 }
32 const char* commit::get_message_encoding() const
33 {
34 return git_commit_message_encoding(m_commit.get());
35 }
37 const char* commit::get_message() const
38 {
39 return git_commit_message(m_commit.get());
40 }
42 const char* commit::get_message_raw() const
43 {
44 return git_commit_message_raw(m_commit.get());
45 }
47 const char* commit::get_body() const
48 {
49 return git_commit_body(m_commit.get());
50 }
52 time_t commit::get_time() const
53 {
54 return git_commit_time(m_commit.get());
55 }
57 int commit::get_time_offset() const
58 {
59 return git_commit_time_offset(m_commit.get());
60 }
62 signature commit::get_signature() const
63 {
64 return signature(git_commit_committer(m_commit.get()));
65 }
67 signature commit::get_author() const
68 {
69 return signature(git_commit_author(m_commit.get()));
70 }
72 const char* commit::get_raw_header() const
73 {
74 return git_commit_raw_header(m_commit.get());
75 }
77 unsigned commit::get_parentcount() const
78 {
79 return git_commit_parentcount(m_commit.get());
80 }
82 commit commit::get_parent(unsigned n) const
83 {
84 git_commit* cmt = nullptr;
86 if (git_commit_parent(&cmt, m_commit.get(), n) != 0) {
87 throw error<error_code_t::error>();
88 }
90 return {cmt, m_repo};
91 }
93 buf commit::get_header_field(const char* field) const
94 {
95 buf bufr;
97 const auto err =
98 error_code_t(git_commit_header_field(bufr.get(), m_commit.get(), field));
100 if (err == error_code_t::ok) {
101 return bufr;
104 if (err == error_code_t::enotfound) {
105 throw error<error_code_t::enotfound>();
108 throw error<error_code_t::error>();
111 tree commit::get_tree() const
113 git_tree* tre = nullptr;
115 if (git_commit_tree(&tre, m_commit.get()) != 0) {
116 throw error<error_code_t::error>();
119 return {tre, m_repo};
122 } // namespace git2wrap