#ifndef GITREPOSITORY_H #define GITREPOSITORY_H #include <QFileInfo> #include <QObject> #include <QSet> #include <memory> #include "gitutils.h" class GitManager; class GitRepository : public QObject { Q_OBJECT public: explicit GitRepository(const QString& folder, QObject *parent = nullptr); ~GitRepository(); const QString &folder() const; void createRepository(); bool hasRepository(QString& currentBranch); bool isFileInRepository(const QFileInfo& fileInfo) { return isFileInRepository(fileInfo.absoluteFilePath()); } bool isFileInRepository(const QString& filePath) { return mFilesInRepositories.contains(filePath); } bool isFileStaged(const QFileInfo& fileInfo) { return isFileStaged(fileInfo.absoluteFilePath()); } bool isFileStaged(const QString& filePath) { return mStagedFiles.contains(filePath); } bool hasStagedFiles() { return !mStagedFiles.isEmpty(); } bool isFileChanged(const QFileInfo& fileInfo) { return isFileChanged(fileInfo.absoluteFilePath()); } bool isFileChanged(const QString& filePath) { return mChangedFiles.contains(filePath); } bool hasChangedFiles() { return !mChangedFiles.isEmpty(); } bool isFileConflicting(const QFileInfo& fileInfo) { return isFileConflicting(fileInfo.absoluteFilePath()); } bool isFileConflicting(const QString& filePath) { return mConflicts.contains(filePath); } bool hasConflicts(){ return !mConflicts.isEmpty(); } bool add(const QString& path, QString& output); bool remove(const QString& path, QString& output); bool rename(const QString& oldName, const QString& newName, QString& output); bool restore(const QString& path, QString& output); QSet<QString> listFiles(bool refresh); bool clone(const QString& url, QString& output); bool commit(const QString& message, QString& output, bool autoStage=true); bool revert(QString& output); void setFolder(const QString &newFolder); void update(); const QString &realFolder() const; signals: private: QString mRealFolder; QString mFolder; bool mInRepository; QString mBranch; GitManager* mManager; QSet<QString> mFilesInRepositories; QSet<QString> mChangedFiles; QSet<QString> mStagedFiles; QSet<QString> mConflicts; private: void convertFilesListToSet(const QStringList& filesList,QSet<QString>& set); }; #endif // GITREPOSITORY_H