Guitar
GitRunner.h
Go to the documentation of this file.
1 #ifndef GITRUNNER_H
2 #define GITRUNNER_H
3 
4 #include <memory>
5 #include <optional>
6 #include <QString>
7 #include "GitTypes.h"
8 
9 #define PATH_PREFIX "*"
10 
11 class Git;
12 class GitObjectCache;
13 
14 class GitRunner {
15 public:
16  std::shared_ptr<Git> git;
17  GitRunner() = default;
18  GitRunner(std::shared_ptr<Git> const &git);
19  GitRunner(GitRunner const &that);
20  GitRunner(GitRunner &&that);
21  void operator = (GitRunner const &that);
22  operator bool () const;
23  GitRunner dup() const;
24 
26  void clearCommandCache();
27  void clearObjectCache();
28 
29  static std::optional<GitCommitItem> parseCommit(QByteArray const &ba);
30 
31  bool isValidWorkingCopy(QString const &dir) const;
32 
33  bool isValidWorkingCopy() const;
34 
35  void setWorkingRepositoryDir(QString const &repo, const QString &sshkey);
36  void setSubmodulePath(const QString &submodpath);
37  QString workingDir() const;
38  QString const &sshKey() const;
39  void setSshKey(const QString &sshkey) const;
40 
41  QString getMessage(const QString &id);
42  QString errorMessage(std::optional<GitResult> const &var) const;
43 
44  bool remove(QString const &path);
45 
46  GitHash revParse(QString const &name, bool use_cache = true);
47  void setRemoteURL(const GitRemote &remote);
48  void addRemoteURL(const GitRemote &remote);
49  void removeRemote(QString const &name);
50  QStringList getRemotes();
51 
52  QString version();
53 
54  bool init();
55 
56  QList<GitTag> tags();
57  bool tag(QString const &name, GitHash const &id = {});
58  bool delete_tag(QString const &name, bool remote);
59 
60  void resetFile(QString const &path);
61  void resetAllFiles();
62 
63  void removeFile(QString const &path, bool rm_real_file);
64 
65  GitUser getUser(GitSource purpose);
66  void setUser(GitUser const&user, bool global);
67  QString getDefaultBranch();
68  void setDefaultBranch(QString const &branchname);
69  void unsetDefaultBranch();
70  QDateTime repositoryLastModifiedTime();
71  QString status();
72  bool commit(QString const &text, bool sign, AbstractPtyProcess *pty);
73  bool commit_amend_m(QString const &text, bool sign, AbstractPtyProcess *pty);
74  bool revert(const GitHash &id);
75  bool push_tags(AbstractPtyProcess *pty = nullptr);
76  void remote_v(std::vector<GitRemote> *out);
77  void createBranch(QString const &name);
78  void checkoutBranch(QString const &name);
79  void mergeBranch(QString const &name, GitMergeFastForward ff, bool squash);
80  bool deleteBranch(QString const &name);
81 
82  bool checkout(QString const &branch_name, QString const &id = {});
83  bool checkout_detach(QString const &id);
84 
85  void rebaseBranch(QString const &name);
86  void rebase_abort();
87 
88  GitCommitItemList log_all(GitHash const &id, int maxcount);
89  GitCommitItemList log_file(QString const &path, int maxcount);
90  std::vector<GitHash> rev_list_all(GitHash const &id, int maxcount);
91 
92  std::optional<GitCommitItem> log_signature(GitHash const &id);
93  GitCommitItemList log(int maxcount);
94  std::optional<GitCommitItem> queryCommitItem(const GitHash &id);
95 
96  bool stash();
97  bool stash_apply();
98  bool stash_drop();
99 
100  QList<GitSubmoduleItem> submodules();
101  bool submodule_add(const GitCloneData &data, bool force, AbstractPtyProcess *pty);
103  QString queryEntireCommitMessage(const GitHash &id);
104 
105  QList<GitDiffRaw> diff_raw(GitHash const &old_id, GitHash const &new_id);
106  QString diff(QString const &old_id, QString const &new_id);
107  QString diff_file(QString const &old_path, QString const &new_path);
108  QString diff_to_file(QString const &old_id, QString const &path);
109  std::vector<std::string> diff_name_only_head();
110  std::string diff_full_index_head_file(QString const &file);
111 
112  std::vector<GitFileStatus> status_s();
113  std::optional<QByteArray> cat_file_(const GitHash &id);
114  GitObject catFile(const GitHash &id, bool use_cache = true);
115  bool clone(GitCloneData const &data, AbstractPtyProcess *pty);
116  void add_A();
117  bool unstage_all();
118 
119  void stage(QString const &path);
120  bool stage(QStringList const &paths, AbstractPtyProcess *pty);
121  void unstage(QString const &path);
122  void unstage(QStringList const &paths);
123  bool pull(AbstractPtyProcess *pty = nullptr);
124 
125  bool fetch(AbstractPtyProcess *pty = nullptr, bool prune = false);
126  bool reset_head1();
127  bool reset_hard();
128  bool clean_df();
129  bool push_u(bool set_upstream, QString const &remote, QString const &branch, bool force, AbstractPtyProcess *pty);
130  QString objectType(const GitHash &id);
131  bool rm_cached(QString const &file);
132  void cherrypick(QString const &name);
133  QString getCherryPicking() const;
134  QList<GitBranch> branches();
135 
136  QString signingKey(GitSource purpose);
137  bool setSigningKey(QString const &id, bool global);
139  bool setSignPolicy(GitSource source, GitSignPolicy policy);
140  bool configGpgProgram(QString const &path, bool global);
141 
142  bool reflog(QList<GitReflogItem> *out, int maxcount = 100);
143  QByteArray blame(QString const &path);
144 
145  std::optional<std::vector<GitFileItem>> ls(const QString &path);
146  std::optional<std::vector<char>> readfile(const QString &path);
147 };
148 
149 #endif // GITRUNNER_H
ApplicationGlobal * global
Definition: main.cpp:28
GitSignPolicy
Definition: GitTypes.h:408
GitMergeFastForward
Definition: GitTypes.h:360
GitSource
Definition: GitTypes.h:253
Definition: AbstractProcess.h:11
Definition: GitTypes.h:142
Definition: GitTypes.h:31
Definition: GitObjectManager.h:37
Definition: GitRunner.h:14
GitObject catFile(const GitHash &id, bool use_cache=true)
Definition: GitRunner.cpp:448
GitRunner dup() const
Definition: GitRunner.cpp:30
QString workingDir() const
Definition: GitRunner.cpp:80
bool configGpgProgram(QString const &path, bool global)
Definition: GitRunner.cpp:598
bool unstage_all()
Definition: GitRunner.cpp:478
bool checkout(QString const &branch_name, QString const &id={})
Definition: GitRunner.cpp:299
GitCommitItemList log(int maxcount)
Definition: GitRunner.cpp:347
QString diff(QString const &old_id, QString const &new_id)
Definition: GitRunner.cpp:407
void removeRemote(QString const &name)
Definition: GitRunner.cpp:143
bool submodule_update(const GitSubmoduleUpdateData &data, AbstractPtyProcess *pty)
Definition: GitRunner.cpp:389
bool setSignPolicy(GitSource source, GitSignPolicy policy)
Definition: GitRunner.cpp:592
GitCommitItemList log_all(GitHash const &id, int maxcount)
Definition: GitRunner.cpp:323
bool fetch(AbstractPtyProcess *pty=nullptr, bool prune=false)
Definition: GitRunner.cpp:514
QString diff_to_file(QString const &old_id, QString const &path)
Definition: GitRunner.cpp:419
QString version()
Definition: GitRunner.cpp:155
bool stash_drop()
Definition: GitRunner.cpp:371
bool checkout_detach(QString const &id)
Definition: GitRunner.cpp:305
GitRunner()=default
void setSshKey(const QString &sshkey) const
Definition: GitRunner.cpp:92
void cherrypick(QString const &name)
Definition: GitRunner.cpp:556
bool init()
Definition: GitRunner.cpp:161
bool push_u(bool set_upstream, QString const &remote, QString const &branch, bool force, AbstractPtyProcess *pty)
Definition: GitRunner.cpp:538
static std::optional< GitCommitItem > parseCommit(QByteArray const &ba)
Definition: GitRunner.cpp:53
bool commit_amend_m(QString const &text, bool sign, AbstractPtyProcess *pty)
Definition: GitRunner.cpp:251
QList< GitBranch > branches()
Definition: GitRunner.cpp:568
bool clean_df()
Definition: GitRunner.cpp:532
QString signingKey(GitSource purpose)
Definition: GitRunner.cpp:574
bool rm_cached(QString const &file)
Definition: GitRunner.cpp:550
void createBranch(QString const &name)
Definition: GitRunner.cpp:275
bool commit(QString const &text, bool sign, AbstractPtyProcess *pty)
Definition: GitRunner.cpp:245
QList< GitTag > tags()
Definition: GitRunner.cpp:167
void checkoutBranch(QString const &name)
Definition: GitRunner.cpp:281
void unstage(QString const &path)
Definition: GitRunner.cpp:496
QList< GitSubmoduleItem > submodules()
Definition: GitRunner.cpp:377
bool delete_tag(QString const &name, bool remote)
Definition: GitRunner.cpp:179
void remote_v(std::vector< GitRemote > *out)
Definition: GitRunner.cpp:269
void setUser(GitUser const &user, bool global)
Definition: GitRunner.cpp:209
bool setSigningKey(QString const &id, bool global)
Definition: GitRunner.cpp:580
void setRemoteURL(const GitRemote &remote)
Definition: GitRunner.cpp:131
QDateTime repositoryLastModifiedTime()
Definition: GitRunner.cpp:233
bool submodule_add(const GitCloneData &data, bool force, AbstractPtyProcess *pty)
Definition: GitRunner.cpp:383
bool stash()
Definition: GitRunner.cpp:359
bool push_tags(AbstractPtyProcess *pty=nullptr)
Definition: GitRunner.cpp:263
std::vector< GitHash > rev_list_all(GitHash const &id, int maxcount)
Definition: GitRunner.cpp:335
QString diff_file(QString const &old_path, QString const &new_path)
Definition: GitRunner.cpp:413
void setDefaultBranch(QString const &branchname)
Definition: GitRunner.cpp:221
QString errorMessage(std::optional< GitResult > const &var) const
Definition: GitRunner.cpp:104
void add_A()
Definition: GitRunner.cpp:472
std::optional< GitCommitItem > queryCommitItem(const GitHash &id)
Definition: GitRunner.cpp:353
QString getDefaultBranch()
Definition: GitRunner.cpp:215
void mergeBranch(QString const &name, GitMergeFastForward ff, bool squash)
Definition: GitRunner.cpp:287
void removeFile(QString const &path, bool rm_real_file)
Definition: GitRunner.cpp:197
QString objectType(const GitHash &id)
Definition: GitRunner.cpp:544
void resetFile(QString const &path)
Definition: GitRunner.cpp:185
QList< GitDiffRaw > diff_raw(GitHash const &old_id, GitHash const &new_id)
Definition: GitRunner.cpp:401
GitObjectCache * getObjCache()
Definition: GitRunner.cpp:37
QStringList getRemotes()
Definition: GitRunner.cpp:149
GitSignPolicy signPolicy(GitSource source)
Definition: GitRunner.cpp:586
GitCommitItemList log_file(QString const &path, int maxcount)
Definition: GitRunner.cpp:329
void rebase_abort()
Definition: GitRunner.cpp:317
void setSubmodulePath(const QString &submodpath)
Definition: GitRunner.cpp:74
GitUser getUser(GitSource purpose)
Definition: GitRunner.cpp:203
QString queryEntireCommitMessage(const GitHash &id)
Definition: GitRunner.cpp:395
void resetAllFiles()
Definition: GitRunner.cpp:191
bool reflog(QList< GitReflogItem > *out, int maxcount=100)
Definition: GitRunner.cpp:604
bool stash_apply()
Definition: GitRunner.cpp:365
bool isValidWorkingCopy() const
Definition: GitRunner.cpp:63
void operator=(GitRunner const &that)
Definition: GitRunner.cpp:20
GitHash revParse(QString const &name, bool use_cache=true)
Definition: GitRunner.cpp:116
std::optional< std::vector< char > > readfile(const QString &path)
Definition: GitRunner.cpp:622
bool clone(GitCloneData const &data, AbstractPtyProcess *pty)
Definition: GitRunner.cpp:466
void clearObjectCache()
Definition: GitRunner.cpp:48
std::shared_ptr< Git > git
Definition: GitRunner.h:16
std::optional< GitCommitItem > log_signature(GitHash const &id)
Definition: GitRunner.cpp:341
void clearCommandCache()
Definition: GitRunner.cpp:43
void unsetDefaultBranch()
Definition: GitRunner.cpp:227
void stage(QString const &path)
Definition: GitRunner.cpp:484
QString status()
Definition: GitRunner.cpp:239
bool deleteBranch(QString const &name)
Definition: GitRunner.cpp:293
void rebaseBranch(QString const &name)
Definition: GitRunner.cpp:311
bool pull(AbstractPtyProcess *pty=nullptr)
Definition: GitRunner.cpp:508
std::optional< std::vector< GitFileItem > > ls(const QString &path)
Definition: GitRunner.cpp:616
bool revert(const GitHash &id)
Definition: GitRunner.cpp:257
std::vector< GitFileStatus > status_s()
Definition: GitRunner.cpp:437
std::optional< QByteArray > cat_file_(const GitHash &id)
Definition: GitRunner.cpp:443
QByteArray blame(QString const &path)
Definition: GitRunner.cpp:610
void addRemoteURL(const GitRemote &remote)
Definition: GitRunner.cpp:137
QString const & sshKey() const
Definition: GitRunner.cpp:86
std::vector< std::string > diff_name_only_head()
Definition: GitRunner.cpp:425
bool tag(QString const &name, GitHash const &id={})
Definition: GitRunner.cpp:173
QString getMessage(const QString &id)
Definition: GitRunner.cpp:98
bool reset_hard()
Definition: GitRunner.cpp:526
bool remove(QString const &path)
Definition: GitRunner.cpp:110
QString getCherryPicking() const
Definition: GitRunner.cpp:562
std::string diff_full_index_head_file(QString const &file)
Definition: GitRunner.cpp:431
bool reset_head1()
Definition: GitRunner.cpp:520
void setWorkingRepositoryDir(QString const &repo, const QString &sshkey)
Definition: GitRunner.cpp:68
Definition: Git.h:17
static Variant var(jstream::Reader const &reader)
Definition: jstream.h:1612
Definition: GitTypes.h:247
Definition: GitTypes.h:77
Definition: GitTypes.h:11
Definition: GitTypes.h:378
Definition: GitTypes.h:211