Polyphase Game Engine
Loading...
Searching...
No Matches
GitTypes.h
Go to the documentation of this file.
1#pragma once
2
3#if EDITOR
4
5#include <string>
6#include <vector>
7#include <cstdint>
8#include <memory>
9#include <atomic>
10
11enum class GitChangeType
12{
14 Added,
15 Deleted,
16 Renamed,
17 Copied,
18 Untracked,
19 Conflicted,
20 Ignored,
21
22 Count
23};
24
25enum class GitStagedState
26{
27 Unstaged,
28 Staged,
29 Both,
30
31 Count
32};
33
34enum class GitOperationKind
35{
36 Clone,
37 Fetch,
38 Pull,
39 Push,
40 PushTags,
41
42 Count
43};
44
45enum class GitOperationStatus
46{
47 Pending,
48 InProgress,
49 Success,
50 Failed,
52
53 Count
54};
55
56struct GitStatusEntry
57{
58 std::string mPath;
59 std::string mOldPath;
60 GitChangeType mChangeType = GitChangeType::Modified;
61 GitStagedState mStagedState = GitStagedState::Unstaged;
62};
63
64struct GitCommitInfo
65{
66 std::string mOid;
67 std::string mShortOid;
68 std::string mSummary;
69 std::string mBody;
70 std::string mAuthorName;
71 std::string mAuthorEmail;
72 std::string mCommitterName;
73 std::string mCommitterEmail;
74 int64_t mTimestamp = 0;
75 std::vector<std::string> mParentOids;
76 std::vector<std::string> mRefNames;
77 bool mIsHead = false;
78};
79
80struct GitBranchInfo
81{
82 std::string mName;
83 std::string mUpstreamName;
84 std::string mLastCommitOid;
85 std::string mLastCommitSummary;
86 bool mIsLocal = true;
87 bool mIsCurrent = false;
88 int32_t mAheadCount = 0;
89 int32_t mBehindCount = 0;
90};
91
92struct GitTagInfo
93{
94 std::string mName;
95 std::string mTargetOid;
96 std::string mMessage;
97 std::string mTaggerName;
98 int64_t mTimestamp = 0;
99 bool mIsAnnotated = false;
100};
101
102struct GitRemoteInfo
103{
104 std::string mName;
105 std::string mFetchUrl;
106 std::string mPushUrl;
107 bool mIsDefault = false;
108};
109
110struct GitDiffLine
111{
112 std::string mContent;
113 int32_t mOldLineNo = -1;
114 int32_t mNewLineNo = -1;
115 char mOrigin = ' ';
116};
117
118struct GitDiffHunk
119{
120 std::string mHeader;
121 int32_t mOldStart = 0;
122 int32_t mOldLines = 0;
123 int32_t mNewStart = 0;
124 int32_t mNewLines = 0;
125 std::vector<GitDiffLine> mLines;
126};
127
128struct GitFileDiff
129{
130 std::string mOldPath;
131 std::string mNewPath;
132 bool mIsBinary = false;
133 std::vector<GitDiffHunk> mHunks;
134};
135
136struct GitProgressEvent
137{
138 enum Phase
139 {
140 Counting,
141 Compressing,
142 Receiving,
143 Resolving,
144 Writing,
145 Unknown
146 };
147
148 Phase mPhase = Unknown;
149 int32_t mPercent = -1;
150 int32_t mCurrent = 0;
151 int32_t mTotal = 0;
152 int64_t mBytes = 0;
153};
154
155struct GitOperationResult
156{
157 GitOperationKind mKind = GitOperationKind::Fetch;
158 GitOperationStatus mStatus = GitOperationStatus::Pending;
159 std::string mMessage;
160 std::string mDetailedError;
161 std::string mSuggestedAction;
162 int32_t mExitCode = 0;
163};
164
165using GitCancelToken = std::shared_ptr<std::atomic_bool>;
166
167inline GitCancelToken CreateCancelToken()
168{
169 return std::make_shared<std::atomic_bool>(false);
170}
171
172#endif