122 lines
4.2 KiB
C++
122 lines
4.2 KiB
C++
#ifndef FOSSIL_H
|
|
#define FOSSIL_H
|
|
|
|
class QStringList;
|
|
#include "LoggedProcess.h"
|
|
#include "Utils.h"
|
|
#include "WorkspaceCommon.h"
|
|
#include <QString>
|
|
#include <QStringList>
|
|
#include <QUrl>
|
|
|
|
class Fossil
|
|
{
|
|
public:
|
|
Fossil();
|
|
void Init(UICallback *callback, const QString &exePath);
|
|
|
|
// Repositories
|
|
bool createRepository(const QString &repositoryPath);
|
|
bool cloneRepository(const QString &repository, const QUrl &url, const QUrl &proxyUrl);
|
|
|
|
// Workspace
|
|
bool createWorkspace(const QString &repositoryPath, const QString &workspacePath);
|
|
bool closeWorkspace(bool force = false);
|
|
void setWorkspace(const QString &_workspacePath);
|
|
bool pushWorkspace(const QUrl &url);
|
|
bool pullWorkspace(const QUrl &url);
|
|
bool undoWorkspace(QStringList &result, bool explainOnly);
|
|
bool updateWorkspace(QStringList &result, const QString &revision, bool explainOnly);
|
|
bool statusWorkspace(QStringList &result);
|
|
WorkspaceState getWorkspaceState();
|
|
static bool isWorkspace(const QString &path);
|
|
|
|
// Workspace Information
|
|
const QString &getProjectName() const { return projectName; }
|
|
const QString &getRepositoryFile() const { return repositoryFile; }
|
|
const QString &getWorkspacePath() const { return workspacePath; }
|
|
|
|
// Files
|
|
bool listFiles(QStringList &files);
|
|
bool diffFile(const QString &repoFile, bool graphical);
|
|
bool commitFiles(const QStringList &fileList, const QString &comment, const QString &newBranchName, bool isPrivateBranch);
|
|
bool addFiles(const QStringList &fileList);
|
|
bool removeFiles(const QStringList &fileList, bool deleteLocal);
|
|
bool addRemoveFiles();
|
|
bool revertFiles(const QStringList &fileList);
|
|
bool renameFile(const QString &beforePath, const QString &afterPath, bool renameLocal);
|
|
|
|
// Settings
|
|
bool getSettings(QStringList &result);
|
|
bool setSetting(const QString &name, const QString &value, bool global);
|
|
|
|
// Remotes
|
|
bool setRemoteUrl(const QUrl &url);
|
|
bool getRemoteUrl(QUrl &url);
|
|
|
|
// Stashes
|
|
bool stashNew(const QStringList &fileList, const QString &name, bool revert);
|
|
bool stashList(stashmap_t &stashes);
|
|
bool stashApply(const QString &name);
|
|
bool stashDrop(const QString &name);
|
|
bool stashDiff(const QString &name);
|
|
|
|
// Tags
|
|
bool tagList(QStringMap &tags);
|
|
bool tagNew(const QString &name, const QString &revision);
|
|
bool tagDelete(const QString &name, const QString &revision);
|
|
|
|
// Branches
|
|
bool branchList(QStringList &branches, QStringList &activeBranches);
|
|
bool branchNew(const QString &name, const QString &revisionBasis, bool isPrivate = false);
|
|
bool branchMerge(QStringList &res, const QString &revision, bool integrate, bool force, bool testOnly);
|
|
|
|
const QString &getCurrentRevision() const { return currentRevision; }
|
|
const QStringList &getActiveTags() const { return activeTags; }
|
|
|
|
// UI
|
|
bool uiRunning() const;
|
|
bool startUI(const QString &httpPort);
|
|
void stopUI();
|
|
const QString &getUIHttpPort() const { return fossilUIPort; }
|
|
QString getUIHttpAddress() const;
|
|
|
|
// Fossil executable
|
|
void setExePath(const QString &path) { fossilPath = path; }
|
|
bool getExeVersion(QString &version);
|
|
|
|
private:
|
|
enum RunFlags
|
|
{
|
|
RUNFLAGS_NONE = 0 << 0,
|
|
RUNFLAGS_SILENT_INPUT = 1 << 0,
|
|
RUNFLAGS_SILENT_OUTPUT = 1 << 1,
|
|
RUNFLAGS_SILENT_ALL = RUNFLAGS_SILENT_INPUT | RUNFLAGS_SILENT_OUTPUT,
|
|
RUNFLAGS_DETACHED = 1 << 2,
|
|
RUNFLAGS_DEBUG = 1 << 3,
|
|
};
|
|
|
|
void setRepositoryFile(const QString &filename) { repositoryFile = filename; }
|
|
bool runFossil(const QStringList &args, QStringList *output = 0, int runFlags = RUNFLAGS_NONE);
|
|
bool runFossilRaw(const QStringList &args, QStringList *output, int *exitCode, int runFlags);
|
|
QString getFossilPath();
|
|
|
|
void log(const QString &text, bool isHTML = false)
|
|
{
|
|
if (uiCallback)
|
|
uiCallback->logText(text, isHTML);
|
|
}
|
|
|
|
UICallback *uiCallback;
|
|
QString workspacePath;
|
|
QString fossilPath; // The value from the settings
|
|
QString repositoryFile;
|
|
QString projectName;
|
|
QString currentRevision;
|
|
QStringList activeTags;
|
|
LoggedProcess fossilUI;
|
|
QString fossilUIPort;
|
|
};
|
|
|
|
#endif // FOSSIL_H
|