Code forensics
0.1
Generate historical information about code changes
|
Go to the documentation of this file. 1 #ifndef GIT_INTERFACE_HPP
4 #define GIT_INTERFACE_HPP
17 const git_error* e = git_error_last();
19 "Error {}/{} while calling {}: {}",
26 const char*
what() const noexcept
override {
return message.c_str(); }
32 #define __GIT_THROW_EXCEPTION(code, function) \
33 throw git::exception(code, function);
42 std::array<char, GIT_OID_HEXSZ + 1> result;
43 git_oid_tostr(result.data(),
sizeof(result), &oid);
44 return Str{result.data(), result.size() - 1};
48 struct fmt::formatter<git_oid> : fmt::formatter<Str> {
49 auto format(CR<git_oid> date, fmt::format_context& ctx)
const {
50 return fmt::formatter<Str>::format(
oid_tostr(date), ctx);
58 git_treewalk_mode mode,
59 Func<
int(
const char*,
const git_tree_entry*)> callback
67 using CB = decltype(callback);
68 CB* allocated =
new CB;
69 *allocated = std::move(callback);
74 const git_tree_entry* entry,
75 void* payload) ->
int {
76 CB* impl =
static_cast<CB*
>(payload);
78 auto __result = (*impl)(root, entry);
80 }
catch (...) {
throw; }
88 using file_cb_t = Func<int(
const git_diff_delta*,
float)>;
94 int(
const git_diff_delta*,
const git_diff_binary*)>;
102 int(
const git_diff_delta*,
const git_diff_hunk*)>;
110 const git_diff_delta*,
111 const git_diff_hunk*,
112 const git_diff_line*)>;
119 CR<DiffForeachParams>
foreach) {
123 [](
const git_diff_delta* delta,
float progress,
void* payload) {
126 return l->
file_cb(delta, progress);
131 [](
const git_diff_delta* delta,
132 const git_diff_binary* binary,
141 [](
const git_diff_delta* delta,
142 const git_diff_hunk* hunk,
146 return l->
hunk_cb(delta, hunk);
151 [](
const git_diff_delta* delta,
152 const git_diff_hunk* hunk,
153 const git_diff_line* line,
157 return l->
line_cb(delta, hunk, line);
168 struct hash<git_oid> {
170 return std::hash<Str>()(
171 Str(
reinterpret_cast<const char*
>(&it.id[0]),
sizeof(it.id)));
181 inline bool operator<(CR<git_oid> lhs, CR<git_oid> rhs) {
186 inline std::ostream&
operator<<(std::ostream& out, git_oid
const& oid) {
192 #endif // GIT_INTERFACE_HPP
line_cb_t line_cb
Definition: git_interface.hpp:114
Func< int(const git_diff_delta *, const git_diff_hunk *)> hunk_cb_t
Definition: git_interface.hpp:102
hunk_cb_t hunk_cb
Definition: git_interface.hpp:104
binary_cb_t binary_cb
Definition: git_interface.hpp:96
std::ostream & operator<<(std::ostream &out, git_oid const &oid)
Definition: git_interface.hpp:186
bool operator==(CR< git_oid > lhs, CR< git_oid > rhs)
Compare git OID for equality.
Definition: git_interface.hpp:177
exception(int error, const char *funcname)
Definition: git_interface.hpp:16
void diff_foreach(git_diff *diff, CR< DiffForeachParams > foreach)
Definition: git_interface.hpp:117
file_cb_t file_cb
Definition: git_interface.hpp:90
void tree_walk(const git_tree *tree, git_treewalk_mode mode, Func< int(const char *, const git_tree_entry *)> callback)
Iterate over the git tree in specified order using provided callback.
Definition: git_interface.hpp:56
Func< int(const git_diff_delta *, const git_diff_binary *)> binary_cb_t
Optional callback to make for binary files.
Definition: git_interface.hpp:94
std::size_t operator()(const git_oid &it) const
Definition: git_interface.hpp:169
Str oid_tostr(git_oid oid)
Convert git ID object to it's string representation.
Definition: git_interface.hpp:41
bool operator<(CR< git_oid > lhs, CR< git_oid > rhs)
Definition: git_interface.hpp:181
int oid_cmp(const git_oid *a, const git_oid *b)
Definition: gitwrap.hpp:151
Definition: git_interface.hpp:86
const char * what() const noexcept override
Definition: git_interface.hpp:26
Definition: git_interface.hpp:165
Str message
Definition: git_interface.hpp:15
Func< int(const git_diff_delta *, const git_diff_hunk *, const git_diff_line *)> line_cb_t
Definition: git_interface.hpp:112
Func< int(const git_diff_delta *, float)> file_cb_t
Callback function to make per file in the diff.
Definition: git_interface.hpp:88
C++ wrapper for the libgit2 library.
Definition: git_interface.hpp:13
Definition: git_interface.hpp:14