Go to the documentation of this file.
14 #define SINGLE_THREAD 0
16 #define GIT_ID_LENGTH (40)
50 void assign(
const QString &qid);
58 return memcmp(
id, other.
id,
sizeof(
id));
60 operator bool ()
const
94 operator bool ()
const
166 for (
size_t i = 0; i <
list.size(); i++) {
172 auto it =
index.find(
id);
173 if (it !=
index.end()) {
174 return &
list[it->second];
222 return mode ==
"160000";
268 operator bool ()
const
270 return id.isValid() && !
name.isEmpty();
344 void parse(QString
const &text);
395 static QString
trimPath(QString
const &s);
410 Git(
Context const &cx, QString
const &repodir, QString
const &submodpath, QString
const &sshkey);
419 void setGitCommand(QString
const &gitcmd,
const QString &sshcmd = {});
424 bool chdirexec(std::function<
bool ()>
const &fn);
432 bool git(QString
const &arg,
Option const &opt);
433 bool git(QString
const &arg)
441 return git(arg, opt);
447 return git(arg, opt);
452 QString
const &
sshKey()
const;
453 void setSshKey(
const QString &sshkey)
const;
460 CommitItemList
log_all(CommitID
const &
id,
int maxcount);
462 CommitItemList
log(
int maxcount);
463 std::optional<CommitItem>
queryCommit(
const CommitID &
id);
483 void stage(QString
const &path);
484 void stage(QStringList
const &paths);
485 void unstage(QString
const &path);
486 void unstage(QStringList
const &paths);
496 QString
diff(QString
const &old_id, QString
const &new_id);
497 QString
diff_file(QString
const &old_path, QString
const &new_path);
517 static bool isValidID(QString
const &
id);
526 bool revert(
const CommitID &
id);
534 QString
diff_to_file(QString
const &old_id, QString
const &path);
541 bool tag(QString
const &name,
const CommitID &
id = QString());
542 void delete_tag(QString
const &name,
bool remote);
551 operator bool ()
const
594 QByteArray
blame(QString
const &path);
QString atts_a
Definition: Git.h:582
Type
Definition: Git.h:191
QString errorMessage() const
Definition: Git.cpp:221
QDateTime commit_date
Definition: Git.h:115
std::map< CommitID, size_t > index
Definition: Git.h:134
QList< Branch > branches()
Definition: Git.cpp:616
void parseDiff(std::string const &s, Git::Diff const *info, Git::Diff *out)
Definition: Git.cpp:1792
std::vector< TreeLine > parent_lines
Definition: Git.h:116
void removeFile(QString const &path)
Definition: Git.cpp:1235
bool git(QString const &arg)
Definition: Git.h:433
bool isValidWorkingCopy() const
Definition: Git.cpp:353
void * callback_cookie
Definition: Git.cpp:95
QString errstring()
Definition: UnixProcess.cpp:322
void setUser(User const &user, bool global)
Definition: Git.cpp:1414
void createBranch(QString const &name)
Definition: Git.cpp:1322
Type type
Definition: Git.h:84
static bool operator<(Git::CommitID const &l, Git::CommitID const &r)
Definition: Git.h:652
bool rm_cached(QString const &file)
Definition: Git.cpp:1457
QString path1() const
Definition: Git.h:373
static QStringList splitWords(QString const &text)
文字列を単語に分割する。
Definition: misc.cpp:162
void delete_tag(QString const &name, bool remote)
Definition: Git.cpp:451
QString id_b
Definition: Git.h:585
Type type
Definition: Git.h:201
bool log
Definition: Git.h:427
size_t size() const
Definition: Git.h:135
bool setSigningKey(QString const &id, bool global)
Definition: Git.cpp:1710
QString version()
Definition: Git.cpp:358
int behind
Definition: Git.h:260
QString working_repo_dir
Definition: Git.cpp:92
callback_t fn_log_writer_callback
Definition: Git.cpp:94
@ None
Definition: Git.h:262
std::vector< char > errbytes
Definition: UnixProcess.h:17
std::shared_ptr< Git > GitPtr
Definition: Git.h:38
char code_x
Definition: Git.h:318
void parseDiff(std::string const &s, Git::Diff const *info, Git::Diff *out)
Definition: Git.cpp:1792
QString getCherryPicking() const
Definition: Git.cpp:1337
QString diff(QString const &old_id, QString const &new_id)
Definition: Git.cpp:464
bool strange_date
Definition: Git.h:127
Type type
Definition: Git.h:636
QStringList getUntrackedFiles()
Definition: Git.cpp:538
void unstage(QString const &path)
Definition: Git.cpp:1262
void parseGitSubModules(const QByteArray &ba, QList< Git::SubmoduleItem > *out)
Definition: Git.cpp:1838
QString encodeQuotedText(QString const &str)
Definition: Git.cpp:1088
QList< NamedCommitItem > NamedCommitList
Definition: Git.h:641
bool isValid() const
Definition: Git.cpp:76
static SignatureGrade evaluateSignature(char c)
Definition: Git.h:228
Git::CommitID id
Definition: Git.h:90
bool setSignPolicy(Source source, SignPolicy policy)
Definition: Git.cpp:1740
void updateIndex()
Definition: Git.h:163
bool git(QString const &arg, Option const &opt)
Definition: Git.cpp:245
QString toQString(int maxlen=-1) const
Definition: Git.cpp:60
QString email
Definition: Git.h:113
void removeRemote(QString const &name)
Definition: Git.cpp:1500
CommitID rev_parse(QString const &name)
Definition: Git.cpp:384
QString ssh_command
Definition: Git.h:68
QString objectType(const CommitID &id)
Definition: Git.cpp:1198
QList< Tag > tags()
Definition: Git.cpp:394
QString gpgsig
Definition: Git.h:117
~Git() override
Definition: Git.cpp:117
struct Git::DiffRaw::AB a
bool clone(CloneData const &data, AbstractPtyProcess *pty)
Definition: Git.cpp:999
Git::CommitID id
Definition: Git.h:257
QString url
Definition: Git.h:510
QList< SubmoduleItem > submodules()
Definition: Git.cpp:1026
QString url
Definition: Git.h:466
int color_number
Definition: Git.h:28
QString id
Definition: Git.h:577
QString path2
Definition: Git.h:324
std::vector< FileStatus > FileStatusList
Definition: Git.h:393
struct Git::CommitItem::@4 sign
CommitID commit_id
Definition: Git.h:110
int marker_depth
Definition: Git.h:125
static void parseAheadBehind(QString const &s, Branch *b)
Definition: Git.cpp:550
QString remote
Definition: Git.h:258
QString gitCommand() const
Definition: Git.cpp:208
std::string resultStdString() const
Definition: Git.cpp:190
void setChangeDir(QString const &dir)
Definition: AbstractProcess.cpp:3
Definition: UnixProcess.h:11
void setLogCallback(callback_t func, void *cookie)
Definition: Git.cpp:122
QString b_id_or_path
Definition: Git.h:208
bool reflog(ReflogItemList *out, int maxcount=100)
Definition: Git.cpp:1507
QString git_command
Definition: Git.cpp:91
QStringList getRemotes()
Definition: Git.cpp:1382
QString status()
Definition: Git.cpp:178
void clear()
Definition: Git.h:155
bool stash_apply()
Definition: Git.cpp:1447
TreeLine(int index=-1, int depth=-1)
Definition: Git.h:30
QString mode
Definition: Git.h:205
void setWorkingRepositoryDir(QString const &repo, const QString &submodpath, const QString &sshkey)
Definition: Git.cpp:128
@ False
Definition: Git.h:598
QString command
Definition: Git.h:579
Git::callback_t callback_t
Definition: Git.cpp:87
bool isCurrent() const
Definition: Git.h:272
void mergeBranch(QString const &name, MergeFastForward ff, bool squash)
Definition: Git.cpp:1357
bool push_tags(AbstractPtyProcess *pty=nullptr)
Definition: Git.cpp:1167
QString mode
Definition: Git.h:502
QString ssh_private_key
Definition: Git.h:69
QList< ReflogItem > ReflogItemList
Definition: Git.h:591
QString commit_id
Definition: Git.h:608
std::vector< std::string > lines
Definition: Git.h:187
QString path
Definition: Git.h:587
QString message
Definition: Git.h:580
FileStatus(QString const &text)
Definition: Git.h:348
static FileStatusCode parseFileStatusCode(char x, char y)
Definition: Git.cpp:1618
bool submodule_update(const SubmoduleUpdateData &data, AbstractPtyProcess *pty)
Definition: Git.cpp:1073
bool empty() const
Definition: Git.h:159
void setRemoteURL(const Remote &remote)
Definition: Git.cpp:1485
void add_A()
Definition: Git.cpp:1240
@ True
Definition: Git.h:599
struct Git::Diff::SubmoduleDetail a_submodule
bool commit_amend_m(QString const &text, bool sign, AbstractPtyProcess *pty)
Definition: Git.cpp:1137
FileStatusList status_s()
Definition: Git.cpp:1193
QString id_a
Definition: Git.h:584
QString signingKey(Source purpose)
Definition: Git.cpp:1695
int compare(CommitID const &other) const
Definition: Git.h:53
void parse(QString const &text)
Definition: Git.cpp:1640
static bool operator==(Git::CommitID const &l, Git::CommitID const &r)
Definition: Git.h:647
bool commit_(QString const &msg, bool amend, bool sign, AbstractPtyProcess *pty)
Definition: Git.cpp:1110
bool configGpgProgram(QString const &path, bool global)
Definition: Git.cpp:1761
QString path2() const
Definition: Git.h:378
int flags
Definition: Git.h:267
QString workingDir() const
Definition: Git.cpp:135
bool reset_hard()
Definition: Git.cpp:1432
QString name
Definition: Git.h:549
QString subdir
Definition: Git.h:468
bool isDeleted() const
Definition: Git.h:368
CommitItem & at(size_t i)
Definition: Git.h:139
@ HeadDetachedAt
Definition: Git.h:264
bool has_child
Definition: Git.h:124
static bool isUncommited(CommitItem const &item)
Definition: Git.h:250
QString ssh_key_override
Definition: Git.cpp:99
QString git_command
Definition: Git.h:67
FileStatusCode code() const
Definition: Git.h:353
QString path1
Definition: Git.h:323
QString trust
Definition: Git.h:122
void cherrypick(QString const &name)
Definition: Git.cpp:1332
QStringList make_branch_list_()
Definition: Git.cpp:1311
QByteArray cat_file_(const CommitID &id)
Definition: Git.cpp:1207
bool recursive
Definition: Git.h:619
QString name
Definition: Git.h:89
void stage(QString const &path)
Definition: Git.cpp:1245
bool git_nolog(QString const &arg)
Definition: Git.h:437
static CommitItem parseCommit(const QByteArray &ba)
Definition: Git.cpp:879
QString id
Definition: Git.h:501
bool valid
Definition: Git.h:44
QString url
Definition: Git.h:93
int wait()
Definition: UnixProcess.cpp:287
void rebaseBranch(QString const &name)
Definition: Git.cpp:1377
Git::CommitItem commit
Definition: Git.h:213
QString name
Definition: Git.h:638
int depth
Definition: Git.h:27
QString name
Definition: Git.h:283
User getUser(Source purpose)
Definition: Git.cpp:1395
static QString trimPath(QString const &s)
Definition: Git.cpp:1587
QList< CommitID > parent_ids
Definition: Git.h:111
struct Git::Diff::SubmoduleDetail b_submodule
QString rawpath2
Definition: Git.h:322
QString head
Definition: Git.h:578
bool(*)(void *, const char *, int) callback_t
Definition: Git.h:414
bool errout
Definition: Git.h:428
QString name
Definition: Git.h:509
QString resultQString() const
Definition: Git.cpp:197
std::optional< QByteArray > cat_file(const CommitID &id)
Definition: Git.cpp:1216
QString message
Definition: Git.h:114
Source
Definition: Git.h:556
bool submodule_add(const CloneData &data, bool force, AbstractPtyProcess *pty)
Definition: Git.cpp:1055
QString diff_file(QString const &old_path, QString const &new_path)
Definition: Git.cpp:472
void setParents(QStringList const &list)
Definition: Git.cpp:27
MergeFastForward
Definition: Git.h:309
Definition: Win32PtyProcess.h:10
void push_u(bool set_upstream, QString const &remote, QString const &branch, bool force, AbstractPtyProcess *pty)
Definition: Git.cpp:1149
QList< Tag > tags2()
Definition: Git.cpp:425
void makeForSingleFile(Git::Diff *diff, QString const &id_a, QString const &id_b, QString const &path, QString const &mode)
Definition: Git.cpp:1779
std::string at
Definition: Git.h:186
QByteArray content
Definition: Git.h:85
uint8_t id[GIT_ID_LENGTH/2]
Definition: Git.h:45
struct Git::FileStatus::Data data
int code_x() const
Definition: Git.h:358
Info info
Definition: Git.cpp:97
Private * m
Definition: Git.h:398
QString rawpath2() const
Definition: Git.h:388
static QStringList splitLines(QByteArray const &ba, std::function< QString(char const *ptr, size_t len)> const &tos)
QByteArrayの文字列を行に分割する。
Definition: misc.cpp:33
QString getCurrentBranchName()
Definition: Git.cpp:526
int ahead
Definition: Git.h:259
bool commit(QString const &text, bool sign, AbstractPtyProcess *pty)
Definition: Git.cpp:1132
static std::vector< uint8_t > hex_string_to_bin(std::string_view const &s, const char *sep=nullptr)
16進数文字列をバイナリデータに変換する
Definition: misc.cpp:604
bool isSubmodule() const
Definition: Git.h:220
std::vector< CommitItem > list
Definition: Git.h:133
QList< File > files
Definition: Git.h:589
QStringList files
Definition: Git.h:505
QByteArray toQByteArray() const
Definition: Git.cpp:184
bool isTracked() const
Definition: Git.h:339
QString email
Definition: Git.h:550
virtual void start(QString const &cmd, QString const &env, QVariant const &userdata=QVariant())=0
const CommitItem * find(CommitID const &id) const
Definition: Git.h:178
void addRemoteURL(const Remote &remote)
Definition: Git.cpp:1492
@ HeadDetachedFrom
Definition: Git.h:265
QString type
Definition: Git.h:586
QString rawpath1() const
Definition: Git.h:383
int code_y() const
Definition: Git.h:363
QString index
Definition: Git.h:203
Type
Definition: Git.h:630
QString atts_b
Definition: Git.h:583
QString name
Definition: Git.h:256
QString diff_to_file(QString const &old_id, QString const &path)
Definition: Git.cpp:514
QList< DiffRaw > diff_raw(CommitID const &old_id, CommitID const &new_id)
Definition: Git.cpp:480
Git::CommitID id
Definition: Git.h:284
@ Unset
Definition: Git.h:597
QString path
Definition: Git.h:204
std::optional< CommitItem > log_signature(CommitID const &id)
Git::log_signature.
Definition: Git.cpp:818
static bool isValidID(QString const &id)
Definition: Git.cpp:154
QString diff
Definition: Git.h:202
QString purpose
Definition: Git.h:511
QList< Hunk > hunks
Definition: Git.h:210
bool git_nochdir(QString const &arg)
Definition: Git.h:443
SignPolicy
Definition: Git.h:596
static bool isValidMailAddress(const QString &email)
文字列が有効なメールアドレスか判定する
Definition: misc.cpp:546
const QString & sshKey() const
Definition: Git.cpp:144
Git::SubmoduleItem item
Definition: Git.h:212
SignPolicy signPolicy(Source source)
Definition: Git.cpp:1723
void setSshKey(const QString &sshkey) const
Definition: Git.cpp:149
bool init
Definition: Git.h:618
QList< RemoteInfo > ls_remote()
Definition: Git.cpp:1676
#define GIT_ID_LENGTH
Definition: Git.h:16
ApplicationGlobal * global
Definition: main.cpp:33
CommitItemList log_all(CommitID const &id, int maxcount)
コミットログを取得する
Definition: Git.cpp:791
QString refs
Definition: Git.h:92
QString author
Definition: Git.h:112
bool init()
Definition: Git.cpp:366
char code_y
Definition: Git.h:319
std::vector< char > outbytes
Definition: UnixProcess.h:16
Git::CommitID id
Definition: Git.h:639
QString ssh_command
Definition: Git.cpp:98
QString ssh_key
Definition: Git.h:512
void unstage_all()
Definition: Git.cpp:1280
QString error_message
Definition: Git.cpp:101
void fetch_tags_f(AbstractPtyProcess *pty)
Definition: Git.cpp:1303
SignatureGrade
Definition: Git.h:100
struct Git::Diff::BLOB_AB_ blob
Definition: AbstractProcess.h:10
void fetch(AbstractPtyProcess *pty=nullptr, bool prune=false)
Definition: Git.cpp:1292
bool stash_drop()
Definition: Git.cpp:1452
QString submodule_path
Definition: Git.cpp:93
std::optional< CommitItem > queryCommit(const CommitID &id)
Definition: Git.cpp:957
static bool isValidID(CommitID const &id)
Definition: Git.h:518
char verify
Definition: Git.h:120
static QString normalizePathSeparator(QString const &str)
Definition: misc.cpp:266
void start(QString const &command, bool use_input)
Definition: UnixProcess.cpp:272
struct Git::DiffRaw::AB b
QString path
Definition: Git.h:91
AbstractPtyProcess * pty
Definition: Git.h:429
#define _SkipEmptyParts
Definition: misc.h:15
void resetAllFiles()
Definition: Git.cpp:1230
FileStatusCode code
Definition: Git.h:320
FileStatusCode
Definition: Git.h:287
Diff(QString const &id, QString const &path, QString const &mode)
Definition: Git.h:216
bool tag(QString const &name, const CommitID &id=QString())
Definition: Git.cpp:444
bool chdirexec(std::function< bool()> const &fn)
Definition: Git.cpp:231
bool revert(const CommitID &id)
Definition: Git.cpp:1142
bool isHeadDetached() const
Definition: Git.h:276
Git()
Definition: Git.cpp:105
QString remote
Definition: Git.h:637
bool bend_early
Definition: Git.h:29
const CommitItem & at(size_t i) const
Definition: Git.h:143
std::vector< char > result
Definition: Git.cpp:100
void pull(AbstractPtyProcess *pty=nullptr)
Definition: Git.cpp:1285
void getRemoteURLs(QList< Remote > *out)
Definition: Git.cpp:1463
int index
Definition: Git.h:26
void checkoutBranch(QString const &name)
Definition: Git.cpp:1327
void parseGitSubModules(QByteArray const &ba, QList< Git::SubmoduleItem > *out)
Definition: Git.cpp:1838
CommitItemList log(int maxcount)
Definition: Git.cpp:874
FileStatusList status_s_()
Definition: Git.cpp:1175
QString rawpath1
Definition: Git.h:321
bool chdir
Definition: Git.h:426
static std::optional< CommitItem > parseCommitItem(const QString &line)
Definition: Git.cpp:731
const QVariant & userVariant() const
Definition: AbstractProcess.cpp:13
CommitItem * find(CommitID const &id)
Definition: Git.h:170
@ Current
Definition: Git.h:263
int process_exit_code
Definition: Git.cpp:102
bool resolved
Definition: Git.h:126
QString a_id_or_path
Definition: Git.h:207
LineSide
Definition: Git.h:20
bool stash()
Definition: Git.cpp:1442
QString getMessage(const QString &id)
Definition: Git.cpp:1351
void resetFile(QString const &path)
Definition: Git.cpp:1225
QString toQString(const std::vector< char > &vec)
Definition: Win32Process.cpp:235
QByteArray blame(QString const &path)
Definition: Git.cpp:1666
CommitItem & operator[](size_t i)
Definition: Git.h:147
bool isUnmerged() const
Definition: Git.h:334
bool isStaged() const
Definition: Git.h:329
void setGitCommand(QString const &gitcmd, const QString &sshcmd={})
Definition: Git.cpp:202
QString state
Definition: Git.h:504
QString prefix
Definition: Git.h:430
int getProcessExitCode() const
Definition: Git.cpp:226
void assign(const QString &qid)
Definition: Git.cpp:35
GitPtr dup() const
Definition: Git.cpp:324
QString basedir
Definition: Git.h:467
std::vector< uint8_t > key_fingerprint
Definition: Git.h:121
bool reset_head1()
Definition: Git.cpp:1427
void clearResult()
Definition: Git.cpp:214
QString name
Definition: Git.h:609
QString text
Definition: Git.h:119
bool clean_df()
Definition: Git.cpp:1437
static CloneData preclone(QString const &url, QString const &path)
Definition: Git.cpp:970