#ifndef GITREPOSITORY_H #define GITREPOSITORY_H #include #include #include #include #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 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 mFilesInRepositories; QSet mChangedFiles; QSet mStagedFiles; QSet mConflicts; private: void convertFilesListToSet(const QStringList& filesList,QSet& set); }; #endif // GITREPOSITORY_H