2024-03-21 16:57:02 +01:00
|
|
|
#ifndef LOCAL_GIT_REPOSITORY_H_INCLUDED
|
|
|
|
#define LOCAL_GIT_REPOSITORY_H_INCLUDED
|
|
|
|
|
|
|
|
#include <QByteArray>
|
|
|
|
#include <QString>
|
|
|
|
#include <QJsonDocument>
|
|
|
|
#include <QJsonArray>
|
|
|
|
#include <QJsonObject>
|
2024-03-27 08:40:16 +01:00
|
|
|
#include <QDir>
|
2024-03-28 16:45:46 +01:00
|
|
|
#include <QMap>
|
2024-03-21 16:57:02 +01:00
|
|
|
|
2024-03-28 16:45:46 +01:00
|
|
|
#include <git2.h>
|
|
|
|
|
|
|
|
class GitLibrary;
|
2024-03-21 16:57:02 +01:00
|
|
|
class LocalGitRepository {
|
2024-03-28 16:45:46 +01:00
|
|
|
friend class GitLibrary;
|
2024-03-21 16:57:02 +01:00
|
|
|
QString m_localRepository;
|
|
|
|
mutable QByteArray m_fileMenu;
|
|
|
|
mutable int32_t m_fileMenuSize;
|
2024-03-28 16:45:46 +01:00
|
|
|
git_repository *m_git_repository;
|
|
|
|
|
|
|
|
static QString repoRootDirectory;
|
|
|
|
static QMap<QString, LocalGitRepository *> localGitRepos;
|
|
|
|
|
|
|
|
protected: // force heap-based objects
|
|
|
|
LocalGitRepository(QString const &localRepository);
|
|
|
|
~LocalGitRepository();
|
2024-03-27 08:40:16 +01:00
|
|
|
|
2024-03-21 16:57:02 +01:00
|
|
|
public:
|
2024-03-27 08:40:16 +01:00
|
|
|
static void SetReposRootDirectory(QString s);
|
|
|
|
static QString GetReposRootDirectory();
|
|
|
|
|
2024-03-28 16:45:46 +01:00
|
|
|
static LocalGitRepository *GetInstance(QString const &localRepository);
|
|
|
|
static bool DestroyInstance(QString const &localRepository);
|
|
|
|
static void DestroyAllRepositories();
|
|
|
|
|
|
|
|
static QMap<QString, LocalGitRepository *> &GetLocalGitRepos();
|
|
|
|
|
|
|
|
QString localRepositoryName() const;
|
|
|
|
QString localRepositoryPath() const;
|
2024-03-21 16:57:02 +01:00
|
|
|
|
2024-03-28 16:45:46 +01:00
|
|
|
void SetGitRepository(git_repository *git_repo);
|
|
|
|
git_repository const *GetGitRepository() const;
|
|
|
|
git_repository *GetGitRepository();
|
2024-03-27 08:40:16 +01:00
|
|
|
|
2024-03-28 16:45:46 +01:00
|
|
|
static QString localRepositoryPath(QString const &localRepository);
|
2024-03-21 16:57:02 +01:00
|
|
|
|
2024-03-25 16:13:26 +01:00
|
|
|
QByteArray GetFileMenuInternal();
|
|
|
|
int32_t GetFileMenuSizeInternal() const;
|
|
|
|
|
|
|
|
QByteArray GetFileNameInternal(QString const &fileId);
|
2024-03-21 16:57:02 +01:00
|
|
|
int32_t GetFileSize(QString const &fileId);
|
2024-03-25 16:13:26 +01:00
|
|
|
QByteArray GetFileInternal(QString const &fileId);
|
2024-03-21 16:57:02 +01:00
|
|
|
|
2024-03-25 16:13:26 +01:00
|
|
|
bool SetFileInternal(QString const &fileId, QByteArray const &json);
|
2024-03-21 16:57:02 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // LOCAL_GIT_REPOSITORY_H_INCLUDED
|