UpdatePTUDevCtrl/git/git_client.h

63 lines
1.8 KiB
C
Raw Normal View History

#ifndef GIT_CLIENT_H_INCLUDED
#define GIT_CLIENT_H_INCLUDED
2023-07-14 13:10:55 +02:00
#include <QObject>
#include <QStringList>
#include <optional>
#include "process/command.h"
#include "ismas/ismas_client.h"
2023-07-14 13:10:55 +02:00
class Worker;
class GitClient : public QObject {
Q_OBJECT
2023-07-14 13:10:55 +02:00
Worker *m_worker;
QString const m_repositoryPath;
2023-07-17 16:51:40 +02:00
QString const m_customerNr;
2023-07-14 13:10:55 +02:00
QString const m_workingDirectory;
QString m_branchName;
2023-07-14 13:10:55 +02:00
QString const m_customerRepository;
2023-07-14 13:12:37 +02:00
bool copyGitConfigFromMaster();
public:
2023-07-17 16:51:40 +02:00
explicit GitClient(QString const &customerNrStr,
QString const &repositoryPath,
2023-07-14 13:12:37 +02:00
QString const &workingDirectory = QCoreApplication::applicationDirPath(),
QString const &branchName = "master",
QObject *parent = 0);
2023-07-14 13:12:37 +02:00
bool gitCloneCustomerRepository();
bool gitCheckoutBranch();
QStringList gitBranchNames();
2023-07-14 13:12:37 +02:00
QString const workingDirectory() const { return m_workingDirectory; }
QString workingDirectory() { return m_workingDirectory; }
QString const branchName() const { return m_branchName; }
QString branchName() { return m_branchName; }
QString repositoryPath() { return m_repositoryPath; }
QString const repositoryPath() const { return m_repositoryPath; }
bool gitCloneAndCheckoutBranch();
Worker *worker() { return m_worker; }
Worker const *worker() const { return m_worker; }
2023-10-18 11:35:23 +02:00
std::optional<QString> gitPull();
std::optional<QStringList> gitDiff(QString const &commit);
std::optional<QStringList> gitMerge();
2023-10-20 13:55:18 +02:00
bool gitFsck();
QString gitLastCommit(QString fileName);
QStringList gitShowReason(QString branchName);
static QString gitBlob(QString fileName);
QString gitCommitForBlob(QString blob);
bool gitIsFileTracked(QString file2name);
};
#endif // GIT_CLIENT_H_INCLUDED