Guitar
GitDiff.h
Go to the documentation of this file.
1 
2 #ifndef GITDIFF_H
3 #define GITDIFF_H
4 
5 #include "GitCommitItem.h"
6 #include "GitSubmodule.h"
7 #include <QList>
8 #include <string>
9 
10 class GitHunk {
11 public:
12  std::string at;
13  std::vector<std::string> lines;
14 };
15 
16 class GitDiff {
17 private:
18  void makeForSingleFile(GitDiff *diff, const std::string &id_a, const std::string &id_b, const std::string &path, const std::string &mode);
19 public:
20  enum class Type {
21  Unknown,
22  Modify,
23  Copy,
24  Rename,
25  Create,
26  Delete,
27  ChType,
28  Unmerged,
29  };
31  std::string diff;
32  std::string index;
33  std::string path;
34  std::string mode;
35  struct BLOB_AB_ {
36  std::string a_id_or_path; // コミットIDまたはファイルパス。パスのときは PATH_PREFIX('*')で始まる
37  std::string b_id_or_path;
38  } blob;
39  QList<GitHunk> hunks;
40  struct SubmoduleDetail {
44  GitDiff() = default;
45  GitDiff(std::string const &id, std::string const &path, std::string const &mode)
46  {
47  makeForSingleFile(this, std::string(GIT_ID_LENGTH, '0'), id, path, mode);
48  }
49  bool isSubmodule() const
50  {
51  return mode == "160000";
52  }
53 };
54 
55 struct GitDiffOption {
56  bool ignore_space_change = false;
57 };
58 
59 
60 
61 #endif // GITDIFF_H
static constexpr int GIT_ID_LENGTH
Definition: GitHash.h:7
Definition: GitDiff.h:16
struct GitDiff::BLOB_AB_ blob
std::string mode
Definition: GitDiff.h:34
GitDiff()=default
GitDiff(std::string const &id, std::string const &path, std::string const &mode)
Definition: GitDiff.h:45
struct GitDiff::SubmoduleDetail a_submodule
std::string diff
Definition: GitDiff.h:31
Type
Definition: GitDiff.h:20
std::string index
Definition: GitDiff.h:32
QList< GitHunk > hunks
Definition: GitDiff.h:39
void makeForSingleFile(GitDiff *diff, const std::string &id_a, const std::string &id_b, const std::string &path, const std::string &mode)
Definition: GitDiff.cpp:5
struct GitDiff::SubmoduleDetail b_submodule
std::string path
Definition: GitDiff.h:33
bool isSubmodule() const
Definition: GitDiff.h:49
Type type
Definition: GitDiff.h:30
Definition: GitDiff.h:10
std::string at
Definition: GitDiff.h:12
std::vector< std::string > lines
Definition: GitDiff.h:13
Definition: GitCommitItem.h:21
Definition: GitDiff.h:55
bool ignore_space_change
Definition: GitDiff.h:56
Definition: GitDiff.h:35
std::string a_id_or_path
Definition: GitDiff.h:36
std::string b_id_or_path
Definition: GitDiff.h:37
Definition: GitDiff.h:40
GitSubmoduleItem item
Definition: GitDiff.h:41
GitCommitItem commit
Definition: GitDiff.h:42
Definition: GitSubmodule.h:7