1#include "gitrepository.h"
2#include "gitmanager.h"
3
4#include <QDir>
5
6GitRepository::GitRepository(const QString& folder, QObject *parent)
7 : QObject{parent},
8 mInRepository(false)
9{
10 mManager = new GitManager();
11 setFolder(folder);
12}
13
14GitRepository::~GitRepository()
15{
16 delete mManager;
17}
18
19const QString &GitRepository::folder() const
20{
21 return mRealFolder;
22}
23
24void GitRepository::createRepository()
25{
26 mManager->createRepository(mRealFolder);
27}
28
29bool GitRepository::hasRepository(QString& currentBranch)
30{
31 currentBranch = mBranch;
32 return mInRepository;
33}
34
35bool GitRepository::add(const QString &path, QString& output)
36{
37 return mManager->add(mFolder,path, output);
38}
39
40bool GitRepository::remove(const QString &path, QString& output)
41{
42 return mManager->remove(mFolder,path, output);
43}
44
45bool GitRepository::rename(const QString &oldName, const QString &newName, QString& output)
46{
47 return mManager->rename(mFolder, oldName, newName,output);
48}
49
50bool GitRepository::restore(const QString &path, QString& output)
51{
52 return mManager->restore(mFolder, path, output);
53}
54
55QSet<QString> GitRepository::listFiles(bool refresh)
56{
57 if (refresh)
58 update();
59 return mFilesInRepositories;
60}
61
62bool GitRepository::clone(const QString &url, QString& output)
63{
64 return mManager->clone(mFolder,url, output);
65}
66
67bool GitRepository::commit(const QString &message, QString& output, bool autoStage)
68{
69 return mManager->commit(mRealFolder, message, autoStage, output);
70}
71
72bool GitRepository::revert(QString& output)
73{
74 return mManager->revert(mRealFolder, output);
75}
76
77void GitRepository::setFolder(const QString &newFolder)
78{
79 mFolder = newFolder;
80 if (!newFolder.isEmpty())
81 mRealFolder = mManager->rootFolder(mFolder);
82 else
83 mRealFolder = newFolder;
84 update();
85}
86
87void GitRepository::update()
88{
89 if (!mManager->isValid() || mFolder.isEmpty()) {
90 mInRepository = false;
91 mBranch = "";
92 mFilesInRepositories.clear();
93 mChangedFiles.clear();
94 mStagedFiles.clear();
95 mConflicts.clear();
96 } else {
97 mInRepository = mManager->hasRepository(mRealFolder,mBranch);
98 convertFilesListToSet(mManager->listFiles(mRealFolder),mFilesInRepositories);
99 convertFilesListToSet(mManager->listChangedFiles(mRealFolder),mChangedFiles);
100 convertFilesListToSet(mManager->listStagedFiles(mRealFolder),mStagedFiles);
101 convertFilesListToSet(mManager->listConflicts(mRealFolder),mConflicts);
102// qDebug()<<"update"<<mRealFolder<<mBranch;
103// qDebug()<<mFilesInRepositories;
104// qDebug()<<mChangedFiles;
105// qDebug()<<mStagedFiles;
106 }
107}
108
109const QString &GitRepository::realFolder() const
110{
111 return mRealFolder;
112}
113
114void GitRepository::convertFilesListToSet(const QStringList &filesList, QSet<QString> &set)
115{
116 set.clear();
117 QDir dir(mRealFolder);
118 foreach (const QString& s, filesList) {
119 set.insert(dir.absoluteFilePath(s));
120 }
121}
122
123