vcsbase: overhaul *Arguments() methods in VCSBaseClient

Refactor how sub VCS clients redefine commands like diff, log, ...
This allows sensible code shrinks in Bazaar and Mercurial plugins

Change-Id: Ifeaf366c5c1c2eee776ce5d6bc748c3872e53f5a
Merge-request: 2201
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
Reviewed-on: http://codereview.qt.nokia.com/3403
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
This commit is contained in:
cerf
2011-08-23 10:38:44 +00:00
committed by Tobias Hunger
parent 31739dc0f7
commit eebe6681bc
7 changed files with 180 additions and 357 deletions

View File

@@ -92,6 +92,21 @@ BranchInfo BazaarClient::synchronousBranchQuery(const QString &repositoryRoot) c
return BranchInfo(repositoryRoot, false);
}
void BazaarClient::commit(const QString &repositoryRoot, const QStringList &files,
const QString &commitMessageFile, const QStringList &extraOptions)
{
VCSBaseClient::commit(repositoryRoot, files, commitMessageFile,
QStringList(extraOptions) << QLatin1String("-F") << commitMessageFile);
}
void BazaarClient::annotate(const QString &workingDir, const QString &file,
const QString revision, int lineNumber,
const QStringList &extraOptions)
{
VCSBaseClient::annotate(workingDir, file, revision, lineNumber,
QStringList(extraOptions) << QLatin1String("--long"));
}
QString BazaarClient::findTopLevelForFile(const QFileInfo &file) const
{
const QString repositoryCheckFile =
@@ -103,6 +118,13 @@ QString BazaarClient::findTopLevelForFile(const QFileInfo &file) const
repositoryCheckFile);
}
void BazaarClient::view(const QString &source, const QString &id, const QStringList &extraOptions)
{
QStringList args(QLatin1String("log"));
args << QLatin1String("-p") << QLatin1String("-v") << extraOptions;
VCSBaseClient::view(source, id, args);
}
QString BazaarClient::vcsEditorKind(VCSCommand cmd) const
{
switch(cmd) {
@@ -117,54 +139,7 @@ QString BazaarClient::vcsEditorKind(VCSCommand cmd) const
}
}
QStringList BazaarClient::cloneArguments(const QString &srcLocation,
const QString &dstLocation,
const QStringList &extraOptions) const
{
QStringList args(extraOptions);
args << srcLocation;
if (!dstLocation.isEmpty())
args << dstLocation;
return args;
}
QStringList BazaarClient::pullArguments(const QString &srcLocation,
const QStringList &extraOptions) const
{
QStringList args(extraOptions);
if (!srcLocation.isEmpty())
args << srcLocation;
return args;
}
QStringList BazaarClient::pushArguments(const QString &dstLocation,
const QStringList &extraOptions) const
{
QStringList args(extraOptions);
if (!dstLocation.isEmpty())
args << dstLocation;
return args;
}
QStringList BazaarClient::commitArguments(const QStringList &files,
const QString &commitMessageFile,
const QStringList &extraOptions) const
{
QStringList args(extraOptions);
args << QLatin1String("-F") << commitMessageFile;
args << files;
return args;
}
QStringList BazaarClient::importArguments(const QStringList &files) const
{
QStringList args;
if (!files.isEmpty())
args.append(files);
return args;
}
QStringList BazaarClient::updateArguments(const QString &revision) const
QStringList BazaarClient::revisionSpec(const QString &revision) const
{
QStringList args;
if (!revision.isEmpty())
@@ -172,67 +147,6 @@ QStringList BazaarClient::updateArguments(const QString &revision) const
return args;
}
QStringList BazaarClient::revertArguments(const QString &file,
const QString &revision) const
{
QStringList args;
if (!revision.isEmpty())
args << QLatin1String("-r") << revision;
if (!file.isEmpty())
args << file;
return args;
}
QStringList BazaarClient::revertAllArguments(const QString &revision) const
{
QStringList args;
if (!revision.isEmpty())
args << QLatin1String("-r") << revision;
return args;
}
QStringList BazaarClient::annotateArguments(const QString &file,
const QString &revision,
int lineNumber) const
{
Q_UNUSED(lineNumber);
QStringList args(QLatin1String("--long"));
if (!revision.isEmpty())
args << QLatin1String("-r") << revision;
return args << file;
}
QStringList BazaarClient::diffArguments(const QStringList &files,
const QStringList &extraOptions) const
{
QStringList args(extraOptions);
if (!files.isEmpty())
args.append(files);
return args;
}
QStringList BazaarClient::logArguments(const QStringList &files,
const QStringList &extraOptions) const
{
return diffArguments(files, extraOptions);
}
QStringList BazaarClient::statusArguments(const QString &file) const
{
QStringList args;
if (!file.isEmpty())
args.append(file);
return args;
}
QStringList BazaarClient::viewArguments(const QString &revision) const
{
QStringList args(QLatin1String("log"));
args << QLatin1String("-p") << QLatin1String("-v")
<< QLatin1String("-r") << revision;
return args;
}
BazaarClient::StatusItem BazaarClient::parseStatusLine(const QString &line) const
{
StatusItem item;

View File

@@ -52,40 +52,24 @@ public:
bool synchronousSetUserId();
BranchInfo synchronousBranchQuery(const QString &repositoryRoot) const;
void commit(const QString &repositoryRoot, const QStringList &files,
const QString &commitMessageFile, const QStringList &extraOptions = QStringList());
void annotate(const QString &workingDir, const QString &file,
const QString revision = QString(), int lineNumber = -1,
const QStringList &extraOptions = QStringList());
void view(const QString &source, const QString &id,
const QStringList &extraOptions = QStringList());
QString findTopLevelForFile(const QFileInfo &file) const;
protected:
QString vcsEditorKind(VCSCommand cmd) const;
QStringList cloneArguments(const QString &srcLocation,
const QString &dstLocation,
const QStringList &extraOptions) const;
QStringList pullArguments(const QString &srcLocation,
const QStringList &extraOptions) const;
QStringList pushArguments(const QString &dstLocation,
const QStringList &extraOptions) const;
QStringList commitArguments(const QStringList &files,
const QString &commitMessageFile,
const QStringList &extraOptions) const;
QStringList importArguments(const QStringList &files) const;
QStringList updateArguments(const QString &revision) const;
QStringList revertArguments(const QString &file, const QString &revision) const;
QStringList revertAllArguments(const QString &revision) const;
QStringList annotateArguments(const QString &file,
const QString &revision, int lineNumber) const;
QStringList diffArguments(const QStringList &files,
const QStringList &extraOptions) const;
QStringList revisionSpec(const QString &revision) const;
VCSBase::VCSBaseEditorParameterWidget *createDiffEditor(const QString &workingDir,
const QStringList &files,
const QStringList &extraOptions);
QStringList logArguments(const QStringList &files,
const QStringList &extraOptions) const;
VCSBase::VCSBaseEditorParameterWidget *createLogEditor(const QString &workingDir,
const QStringList &files,
const QStringList &extraOptions);
QStringList statusArguments(const QString &file) const;
QStringList viewArguments(const QString &revision) const;
StatusItem parseStatusLine(const QString &line) const;
private:
friend class CloneWizard;

View File

@@ -112,7 +112,7 @@ QSharedPointer<VCSBase::AbstractCheckoutJob> CloneWizard::createJob(const QList<
extraOptions << QLatin1String("-r") << panel->revision();
const BazaarClient *client = BazaarPlugin::instance()->client();
args << client->vcsCommandString(BazaarClient::CloneCommand)
<< client->cloneArguments(page->repository(), page->directory(), extraOptions);
<< extraOptions << page->repository() << page->directory();
VCSBase::ProcessCheckoutJob *job = new VCSBase::ProcessCheckoutJob;
job->addStep(settings.binary(), args, page->path());

View File

@@ -303,6 +303,54 @@ void MercurialClient::outgoing(const QString &repositoryRoot)
enqueueJob(job);
}
void MercurialClient::annotate(const QString &workingDir, const QString &file,
const QString revision, int lineNumber,
const QStringList &extraOptions)
{
QStringList args(extraOptions);
args << QLatin1String("-u") << QLatin1String("-c") << QLatin1String("-d");
VCSBaseClient::annotate(workingDir, file, revision, lineNumber, args);
}
void MercurialClient::commit(const QString &repositoryRoot, const QStringList &files,
const QString &commitMessageFile,
const QStringList &extraOptions)
{
QStringList args(extraOptions);
args << QLatin1String("--noninteractive") << QLatin1String("-l") << commitMessageFile;
VCSBaseClient::commit(repositoryRoot, files, commitMessageFile, args);
}
void MercurialClient::diff(const QString &workingDir, const QStringList &files,
const QStringList &extraOptions)
{
QStringList args(extraOptions);
args << QLatin1String("-g") << QLatin1String("-p") << QLatin1String("-U 8");
VCSBaseClient::diff(workingDir, files, args);
}
void MercurialClient::import(const QString &repositoryRoot, const QStringList &files,
const QStringList &extraOptions)
{
VCSBaseClient::import(repositoryRoot, files,
QStringList(extraOptions) << QLatin1String("--no-commit"));
}
void MercurialClient::revertAll(const QString &workingDir, const QString &revision,
const QStringList &extraOptions)
{
VCSBaseClient::revertAll(workingDir, revision,
QStringList(extraOptions) << QLatin1String("--all"));
}
void MercurialClient::view(const QString &source, const QString &id,
const QStringList &extraOptions)
{
QStringList args;
args << QLatin1String("log") << QLatin1String("-p") << QLatin1String("-g");
VCSBaseClient::view(source, id, args << extraOptions);
}
QString MercurialClient::findTopLevelForFile(const QFileInfo &file) const
{
const QString repositoryCheckFile = QLatin1String(Constants::MECURIALREPO) + QLatin1String("/requires");
@@ -323,60 +371,7 @@ QString MercurialClient::vcsEditorKind(VCSCommand cmd) const
return QLatin1String("");
}
QStringList MercurialClient::cloneArguments(const QString &srcLocation,
const QString &dstLocation,
const QStringList &extraOptions) const
{
Q_UNUSED(srcLocation);
Q_UNUSED(dstLocation);
Q_UNUSED(extraOptions);
QStringList args;
return args;
}
QStringList MercurialClient::pullArguments(const QString &srcLocation,
const QStringList &extraOptions) const
{
Q_UNUSED(extraOptions);
QStringList args;
// Add arguments for common options
if (!srcLocation.isEmpty())
args << srcLocation;
return args;
}
QStringList MercurialClient::pushArguments(const QString &dstLocation,
const QStringList &extraOptions) const
{
Q_UNUSED(extraOptions);
QStringList args;
// Add arguments for common options
if (!dstLocation.isEmpty())
args << dstLocation;
return args;
}
QStringList MercurialClient::commitArguments(const QStringList &files,
const QString &commitMessageFile,
const QStringList &extraOptions) const
{
QStringList args(QLatin1String("--noninteractive"));
if (!args.isEmpty())
args.append(extraOptions);
args << QLatin1String("-l") << commitMessageFile;
args << files;
return args;
}
QStringList MercurialClient::importArguments(const QStringList &files) const
{
QStringList args(QLatin1String("--no-commit"));
if (!files.isEmpty())
args.append(files);
return args;
}
QStringList MercurialClient::updateArguments(const QString &revision) const
QStringList MercurialClient::revisionSpec(const QString &revision) const
{
QStringList args;
if (!revision.isEmpty())
@@ -384,74 +379,6 @@ QStringList MercurialClient::updateArguments(const QString &revision) const
return args;
}
QStringList MercurialClient::revertArguments(const QString &file,
const QString &revision) const
{
QStringList args;
if (!revision.isEmpty())
args << QLatin1String("-r") << revision;
if (!file.isEmpty())
args << file;
return args;
}
QStringList MercurialClient::revertAllArguments(const QString &revision) const
{
QStringList args;
if (!revision.isEmpty())
args << QLatin1String("-r") << revision;
return args << QLatin1String("--all");
}
QStringList MercurialClient::annotateArguments(const QString &file,
const QString &revision,
int /*lineNumber*/) const
{
QStringList args;
args << QLatin1String("-u") << QLatin1String("-c") << QLatin1String("-d");
if (!revision.isEmpty())
args << QLatin1String("-r") << revision;
return args << file;
}
QStringList MercurialClient::diffArguments(const QStringList &files,
const QStringList &extraOptions) const
{
QStringList args;
args << QLatin1String("-g") << QLatin1String("-p") << QLatin1String("-U 8");
if (!args.isEmpty())
args.append(extraOptions);
if (!files.isEmpty())
args.append(files);
return args;
}
QStringList MercurialClient::logArguments(const QStringList &files,
const QStringList &extraOptions) const
{
Q_UNUSED(extraOptions);
QStringList args;
if (!files.empty())
args.append(files);
return args;
}
QStringList MercurialClient::statusArguments(const QString &file) const
{
QStringList args;
if (!file.isEmpty())
args.append(file);
return args;
}
QStringList MercurialClient::viewArguments(const QString &revision) const
{
QStringList args;
args << QLatin1String("log") << QLatin1String("-p") << QLatin1String("-g")
<< QLatin1String("-r") << revision;
return args;
}
MercurialClient::StatusItem MercurialClient::parseStatusLine(const QString &line) const
{
StatusItem item;

View File

@@ -68,38 +68,30 @@ public:
void outgoing(const QString &repositoryRoot);
QString vcsGetRepositoryURL(const QString &directory);
void annotate(const QString &workingDir, const QString &file,
const QString revision = QString(), int lineNumber = -1,
const QStringList &extraOptions = QStringList());
void commit(const QString &repositoryRoot, const QStringList &files,
const QString &commitMessageFile,
const QStringList &extraOptions = QStringList());
void diff(const QString &workingDir, const QStringList &files = QStringList(),
const QStringList &extraOptions = QStringList());
void import(const QString &repositoryRoot, const QStringList &files,
const QStringList &extraOptions = QStringList());
void revertAll(const QString &workingDir, const QString &revision = QString(),
const QStringList &extraOptions = QStringList());
void view(const QString &source, const QString &id,
const QStringList &extraOptions = QStringList());
public:
QString findTopLevelForFile(const QFileInfo &file) const;
protected:
QString vcsEditorKind(VCSCommand cmd) const;
QStringList cloneArguments(const QString &srcLocation,
const QString &dstLocation,
const QStringList &extraOptions) const;
QStringList pullArguments(const QString &srcLocation,
const QStringList &extraOptions) const;
QStringList pushArguments(const QString &dstLocation,
const QStringList &extraOptions) const;
QStringList commitArguments(const QStringList &files,
const QString &commitMessageFile,
const QStringList &extraOptions) const;
QStringList importArguments(const QStringList &files) const;
QStringList updateArguments(const QString &revision) const;
QStringList revertArguments(const QString &file, const QString &revision) const;
QStringList revertAllArguments(const QString &revision) const;
QStringList annotateArguments(const QString &file,
const QString &revision, int lineNumber) const;
QStringList diffArguments(const QStringList &files,
const QStringList &extraOptions) const;
QStringList revisionSpec(const QString &revision) const;
VCSBase::VCSBaseEditorParameterWidget *createDiffEditor(const QString &workingDir,
const QStringList &files,
const QStringList &extraOptions);
QStringList logArguments(const QStringList &files,
const QStringList &extraOptions) const;
QStringList statusArguments(const QString &file) const;
QStringList viewArguments(const QString &revision) const;
StatusItem parseStatusLine(const QString &line) const;
};

View File

@@ -155,9 +155,11 @@ VCSBaseClient::~VCSBaseClient()
}
}
bool VCSBaseClient::synchronousCreateRepository(const QString &workingDirectory)
bool VCSBaseClient::synchronousCreateRepository(const QString &workingDirectory,
const QStringList &extraOptions)
{
const QStringList args(vcsCommandString(CreateRepositoryCommand));
QStringList args(vcsCommandString(CreateRepositoryCommand));
args << extraOptions;
QByteArray outputData;
if (!vcsFullySynchronousExec(workingDirectory, args, &outputData))
return false;
@@ -174,32 +176,35 @@ bool VCSBaseClient::synchronousClone(const QString &workingDir,
{
QStringList args;
args << vcsCommandString(CloneCommand)
<< cloneArguments(srcLocation, dstLocation, extraOptions);
<< extraOptions << srcLocation << dstLocation;
QByteArray stdOut;
return vcsFullySynchronousExec(workingDir, args, &stdOut);
}
bool VCSBaseClient::synchronousAdd(const QString &workingDir, const QString &filename)
bool VCSBaseClient::synchronousAdd(const QString &workingDir, const QString &filename,
const QStringList &extraOptions)
{
QStringList args;
args << vcsCommandString(AddCommand) << filename;
args << vcsCommandString(AddCommand) << extraOptions << filename;
QByteArray stdOut;
return vcsFullySynchronousExec(workingDir, args, &stdOut);
}
bool VCSBaseClient::synchronousRemove(const QString &workingDir, const QString &filename)
bool VCSBaseClient::synchronousRemove(const QString &workingDir, const QString &filename,
const QStringList &extraOptions)
{
QStringList args;
args << vcsCommandString(RemoveCommand) << filename;
args << vcsCommandString(RemoveCommand) << extraOptions << filename;
QByteArray stdOut;
return vcsFullySynchronousExec(workingDir, args, &stdOut);
}
bool VCSBaseClient::synchronousMove(const QString &workingDir,
const QString &from, const QString &to)
const QString &from, const QString &to,
const QStringList &extraOptions)
{
QStringList args;
args << vcsCommandString(MoveCommand) << from << to;
args << vcsCommandString(MoveCommand) << extraOptions << from << to;
QByteArray stdOut;
return vcsFullySynchronousExec(workingDir, args, &stdOut);
}
@@ -209,7 +214,7 @@ bool VCSBaseClient::synchronousPull(const QString &workingDir,
const QStringList &extraOptions)
{
QStringList args;
args << vcsCommandString(PullCommand) << pullArguments(srcLocation, extraOptions);
args << vcsCommandString(PullCommand) << extraOptions << srcLocation;
// Disable UNIX terminals to suppress SSH prompting
const unsigned flags =
VCSBase::VCSBasePlugin::SshPasswordPrompt
@@ -227,7 +232,7 @@ bool VCSBaseClient::synchronousPush(const QString &workingDir,
const QStringList &extraOptions)
{
QStringList args;
args << vcsCommandString(PushCommand) << pushArguments(dstLocation, extraOptions);
args << vcsCommandString(PushCommand) << extraOptions << dstLocation;
// Disable UNIX terminals to suppress SSH prompting
const unsigned flags =
VCSBase::VCSBasePlugin::SshPasswordPrompt
@@ -289,12 +294,13 @@ Utils::SynchronousProcessResponse VCSBaseClient::vcsSynchronousExec(
void VCSBaseClient::annotate(const QString &workingDir, const QString &file,
const QString revision /* = QString() */,
int lineNumber /* = -1 */)
int lineNumber /* = -1 */,
const QStringList &extraOptions)
{
Q_UNUSED(lineNumber)
const QString vcsCmdString = vcsCommandString(AnnotateCommand);
QStringList args;
args << vcsCmdString << annotateArguments(file, revision, lineNumber);
args << vcsCmdString << revisionSpec(revision) << extraOptions << file;
const QString kind = vcsEditorKind(AnnotateCommand);
const QString id = VCSBase::VCSBaseEditorWidget::getSource(workingDir, QStringList(file));
const QString title = vcsEditorTitle(vcsCmdString, id);
@@ -329,7 +335,7 @@ void VCSBaseClient::diff(const QString &workingDir, const QStringList &files,
QStringList args;
const QStringList paramArgs = paramWidget != 0 ? paramWidget->arguments() : QStringList();
args << vcsCmdString << diffArguments(files, extraOptions + paramArgs);
args << vcsCmdString << extraOptions << paramArgs << files;
QSharedPointer<VCSJob> job(new VCSJob(workingDir, args, editor));
enqueueJob(job);
}
@@ -354,17 +360,18 @@ void VCSBaseClient::log(const QString &workingDir, const QStringList &files,
QStringList args;
const QStringList paramArgs = paramWidget != 0 ? paramWidget->arguments() : QStringList();
args << vcsCmdString << logArguments(files, extraOptions + paramArgs);
args << vcsCmdString << extraOptions << paramArgs << files;
QSharedPointer<VCSJob> job(new VCSJob(workingDir, args, editor));
enqueueJob(job);
}
void VCSBaseClient::revertFile(const QString &workingDir,
const QString &file,
const QString &revision)
const QString &revision,
const QStringList &extraOptions)
{
QStringList args(vcsCommandString(RevertCommand));
args << revertArguments(file, revision);
args << revisionSpec(revision) << extraOptions << file;
// Indicate repository change or file list
QSharedPointer<VCSJob> job(new VCSJob(workingDir, args));
job->setCookie(QStringList(workingDir + QLatin1Char('/') + file));
@@ -373,10 +380,11 @@ void VCSBaseClient::revertFile(const QString &workingDir,
enqueueJob(job);
}
void VCSBaseClient::revertAll(const QString &workingDir, const QString &revision)
void VCSBaseClient::revertAll(const QString &workingDir, const QString &revision,
const QStringList &extraOptions)
{
QStringList args(vcsCommandString(RevertCommand));
args << revertAllArguments(revision);
args << revisionSpec(revision) << extraOptions;
// Indicate repository change or file list
QSharedPointer<VCSJob> job(new VCSJob(workingDir, args));
connect(job.data(), SIGNAL(succeeded(QVariant)),
@@ -384,10 +392,11 @@ void VCSBaseClient::revertAll(const QString &workingDir, const QString &revision
enqueueJob(job);
}
void VCSBaseClient::status(const QString &workingDir, const QString &file)
void VCSBaseClient::status(const QString &workingDir, const QString &file,
const QStringList &extraOptions)
{
QStringList args(vcsCommandString(StatusCommand));
args << statusArguments(file);
args << extraOptions << file;
VCSBase::VCSBaseOutputWindow *outwin = VCSBase::VCSBaseOutputWindow::instance();
outwin->setRepository(workingDir);
QSharedPointer<VCSJob> job(new VCSJob(workingDir, args));
@@ -427,17 +436,20 @@ QString VCSBaseClient::vcsCommandString(VCSCommand cmd) const
return QString();
}
void VCSBaseClient::import(const QString &repositoryRoot, const QStringList &files)
void VCSBaseClient::import(const QString &repositoryRoot, const QStringList &files,
const QStringList &extraOptions)
{
QStringList args(vcsCommandString(ImportCommand));
args << importArguments(files);
args << extraOptions << files;
QSharedPointer<VCSJob> job(new VCSJob(repositoryRoot, args));
enqueueJob(job);
}
void VCSBaseClient::view(const QString &source, const QString &id)
void VCSBaseClient::view(const QString &source, const QString &id,
const QStringList &extraOptions)
{
QStringList args(viewArguments(id));
QStringList args;
args << extraOptions << revisionSpec(id);
const QString kind = vcsEditorKind(DiffCommand);
const QString title = vcsEditorTitle(vcsCommandString(LogCommand), id);
@@ -450,11 +462,11 @@ void VCSBaseClient::view(const QString &source, const QString &id)
enqueueJob(job);
}
void VCSBaseClient::update(const QString &repositoryRoot, const QString &revision)
void VCSBaseClient::update(const QString &repositoryRoot, const QString &revision,
const QStringList &extraOptions)
{
QStringList args(vcsCommandString(UpdateCommand));
args.append(updateArguments(revision));
args << revisionSpec(revision) << extraOptions;
QSharedPointer<VCSJob> job(new VCSJob(repositoryRoot, args));
job->setCookie(repositoryRoot);
// Suppress SSH prompting
@@ -468,8 +480,17 @@ void VCSBaseClient::commit(const QString &repositoryRoot,
const QString &commitMessageFile,
const QStringList &extraOptions)
{
// Handling of commitMessageFile is a bit tricky :
// VCSBaseClient cannot do something with it because it doesn't know which
// option to use (-F ? but sub VCS clients might require a different option
// name like -l for hg ...)
//
// So descendants of VCSBaseClient *must* redefine commit() and extend
// extraOptions with the usage for commitMessageFile (see BazaarClient::commit()
// for example)
Q_UNUSED(commitMessageFile);
QStringList args(vcsCommandString(CommitCommand));
args.append(commitArguments(files, commitMessageFile, extraOptions));
args << extraOptions << files;
QSharedPointer<VCSJob> job(new VCSJob(repositoryRoot, args));
enqueueJob(job);
}

View File

@@ -47,10 +47,6 @@ class QFileInfo;
class QVariant;
QT_END_NAMESPACE
namespace Core {
class ICore;
}
namespace Utils {
struct SynchronousProcessResponse;
}
@@ -77,39 +73,49 @@ public:
explicit VCSBaseClient(VCSBaseClientSettings *settings);
~VCSBaseClient();
virtual bool synchronousCreateRepository(const QString &workingDir);
virtual bool synchronousCreateRepository(const QString &workingDir,
const QStringList &extraOptions = QStringList());
virtual bool synchronousClone(const QString &workingDir,
const QString &srcLocation,
const QString &dstLocation,
const QStringList &extraOptions = QStringList());
virtual bool synchronousAdd(const QString &workingDir, const QString &fileName);
virtual bool synchronousRemove(const QString &workingDir, const QString &fileName);
virtual bool synchronousAdd(const QString &workingDir, const QString &fileName,
const QStringList &extraOptions = QStringList());
virtual bool synchronousRemove(const QString &workingDir, const QString &fileName,
const QStringList &extraOptions = QStringList());
virtual bool synchronousMove(const QString &workingDir,
const QString &from, const QString &to);
const QString &from, const QString &to,
const QStringList &extraOptions = QStringList());
virtual bool synchronousPull(const QString &workingDir,
const QString &srcLocation,
const QStringList &extraOptions = QStringList());
virtual bool synchronousPush(const QString &workingDir,
const QString &dstLocation,
const QStringList &extraOptions = QStringList());
void annotate(const QString &workingDir, const QString &file,
const QString revision = QString(), int lineNumber = -1);
void diff(const QString &workingDir, const QStringList &files = QStringList(),
const QStringList &extraOptions = QStringList());
void log(const QString &workingDir, const QStringList &files = QStringList(),
const QStringList &extraOptions = QStringList(),
bool enableAnnotationContextMenu = false);
void status(const QString &workingDir, const QString &file = QString());
virtual void annotate(const QString &workingDir, const QString &file,
const QString revision = QString(), int lineNumber = -1,
const QStringList &extraOptions = QStringList());
virtual void diff(const QString &workingDir, const QStringList &files = QStringList(),
const QStringList &extraOptions = QStringList());
virtual void log(const QString &workingDir, const QStringList &files = QStringList(),
const QStringList &extraOptions = QStringList(),
bool enableAnnotationContextMenu = false);
virtual void status(const QString &workingDir, const QString &file = QString(),
const QStringList &extraOptions = QStringList());
virtual void emitParsedStatus(const QString &repository,
const QStringList &extraOptions = QStringList());
void revertFile(const QString &workingDir, const QString &file, const QString &revision = QString());
void revertAll(const QString &workingDir, const QString &revision = QString());
void import(const QString &repositoryRoot, const QStringList &files);
void update(const QString &repositoryRoot, const QString &revision = QString());
void commit(const QString &repositoryRoot,
const QStringList &files,
const QString &commitMessageFile,
const QStringList &extraOptions = QStringList());
virtual void revertFile(const QString &workingDir, const QString &file,
const QString &revision = QString(),
const QStringList &extraOptions = QStringList());
virtual void revertAll(const QString &workingDir, const QString &revision = QString(),
const QStringList &extraOptions = QStringList());
virtual void import(const QString &repositoryRoot, const QStringList &files,
const QStringList &extraOptions = QStringList());
virtual void update(const QString &repositoryRoot, const QString &revision = QString(),
const QStringList &extraOptions = QStringList());
virtual void commit(const QString &repositoryRoot, const QStringList &files,
const QString &commitMessageFile,
const QStringList &extraOptions = QStringList());
virtual QString findTopLevelForFile(const QFileInfo &file) const = 0;
@@ -121,7 +127,8 @@ signals:
void changed(const QVariant &v);
public slots:
void view(const QString &source, const QString &id);
virtual void view(const QString &source, const QString &id,
const QStringList &extraOptions = QStringList());
void handleSettingsChanged();
protected:
@@ -146,35 +153,13 @@ protected:
virtual QString vcsCommandString(VCSCommand cmd) const;
virtual QString vcsEditorKind(VCSCommand cmd) const = 0;
virtual QStringList cloneArguments(const QString &srcLocation,
const QString &dstLocation,
const QStringList &extraOptions) const = 0;
virtual QStringList pullArguments(const QString &srcLocation,
const QStringList &extraOptions) const = 0;
virtual QStringList pushArguments(const QString &dstLocation,
const QStringList &extraOptions) const = 0;
virtual QStringList commitArguments(const QStringList &files,
const QString &commitMessageFile,
const QStringList &extraOptions) const = 0;
virtual QStringList importArguments(const QStringList &files) const = 0;
virtual QStringList updateArguments(const QString &revision) const = 0;
virtual QStringList revertArguments(const QString &file, const QString &revision) const = 0;
virtual QStringList revertAllArguments(const QString &revision) const = 0;
virtual QStringList annotateArguments(const QString &file,
const QString &revision, int lineNumber) const = 0;
virtual QStringList diffArguments(const QStringList &files,
const QStringList &extraOptions) const = 0;
virtual QStringList revisionSpec(const QString &revision) const = 0;
virtual VCSBaseEditorParameterWidget *createDiffEditor(const QString &workingDir,
const QStringList &files,
const QStringList &extraOptions);
virtual QStringList logArguments(const QStringList &files,
const QStringList &extraOptions) const = 0;
virtual VCSBaseEditorParameterWidget *createLogEditor(const QString &workingDir,
const QStringList &files,
const QStringList &extraOptions);
virtual QStringList statusArguments(const QString &file) const = 0;
virtual QStringList viewArguments(const QString &revision) const = 0;
virtual StatusItem parseStatusLine(const QString &line) const = 0;
QString vcsEditorTitle(const QString &vcsCmd, const QString &sourceId) const;