aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@theqtcompany.com>2015-04-29 16:46:45 +0200
committerTobias Hunger <tobias.hunger@theqtcompany.com>2015-05-11 13:22:49 +0000
commit94dc35694a3374ef785a6765730dfc1d9401075f (patch)
treeb768a67347f96f6eb3972da56e885e95bd7c8ea6
parentf21d2023e86e8ba9c0725852a79394ec80baaf16 (diff)
CheckoutWizards: Use IVersionControl::createInitialCheckoutCommand
Change-Id: I09dd38f66b9cad46d561493c2e27a833595d8728 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
-rw-r--r--src/plugins/bazaar/clonewizard.cpp20
-rw-r--r--src/plugins/cvs/checkoutwizard.cpp22
-rw-r--r--src/plugins/git/clonewizard.cpp25
-rw-r--r--src/plugins/git/clonewizardpage.cpp26
-rw-r--r--src/plugins/git/clonewizardpage.h4
-rw-r--r--src/plugins/mercurial/clonewizard.cpp21
-rw-r--r--src/plugins/subversion/checkoutwizard.cpp23
-rw-r--r--src/plugins/vcsbase/basecheckoutwizard.cpp33
-rw-r--r--src/plugins/vcsbase/basecheckoutwizard.h12
9 files changed, 81 insertions, 105 deletions
diff --git a/src/plugins/bazaar/clonewizard.cpp b/src/plugins/bazaar/clonewizard.cpp
index 8ee1a69e215..06092e989fa 100644
--- a/src/plugins/bazaar/clonewizard.cpp
+++ b/src/plugins/bazaar/clonewizard.cpp
@@ -42,8 +42,6 @@
#include <utils/qtcassert.h>
-#include <QDebug>
-
using namespace VcsBase;
namespace Bazaar {
@@ -54,17 +52,11 @@ namespace Internal {
// --------------------------------------------------------------------
CloneWizard::CloneWizard(const Utils::FileName &path, QWidget *parent) :
- BaseCheckoutWizard(path, parent)
+ BaseCheckoutWizard(Constants::VCS_ID_BAZAAR, parent)
{
setTitle(tr("Cloning"));
setStartedStatus(tr("Cloning started..."));
- const Core::IVersionControl *vc = BazaarPlugin::instance()->versionControl();
- if (!vc->isConfigured()) {
- auto configPage = new VcsConfigurationPage;
- configPage->setVersionControl(vc);
- addPage(configPage);
- }
auto page = new CloneWizardPage;
page->setPath(path.toString());
addPage(page);
@@ -75,7 +67,6 @@ VcsCommand *CloneWizard::createCommand(Utils::FileName *checkoutDir)
const CloneWizardPage *cwp = find<CloneWizardPage>();
QTC_ASSERT(cwp, return 0);
- const VcsBaseClientSettings &settings = BazaarPlugin::instance()->client()->settings();
*checkoutDir = Utils::FileName::fromString(cwp->path() + QLatin1Char('/') + cwp->directory());
const CloneOptionsPanel *panel = cwp->cloneOptionsPanel();
@@ -96,14 +87,9 @@ VcsCommand *CloneWizard::createCommand(Utils::FileName *checkoutDir)
extraOptions += QLatin1String("--no-tree");
if (!panel->revision().isEmpty())
extraOptions << QLatin1String("-r") << panel->revision();
- const BazaarClient *client = BazaarPlugin::instance()->client();
- QStringList args;
- args << client->vcsCommandString(BazaarClient::CloneCommand)
- << extraOptions << cwp->repository() << cwp->directory();
- auto command = new VcsCommand(cwp->path(), client->processEnvironment());
- command->addJob(settings.binaryPath(), args, -1);
- return command;
+ return createCommandImpl(cwp->repository(), Utils::FileName::fromString(cwp->path()),
+ cwp->directory(), extraOptions);
}
} // namespace Internal
diff --git a/src/plugins/cvs/checkoutwizard.cpp b/src/plugins/cvs/checkoutwizard.cpp
index 334cd415c23..b731f87891f 100644
--- a/src/plugins/cvs/checkoutwizard.cpp
+++ b/src/plugins/cvs/checkoutwizard.cpp
@@ -49,14 +49,8 @@ namespace Internal {
// --------------------------------------------------------------------
CheckoutWizard::CheckoutWizard(const Utils::FileName &path, QWidget *parent) :
- BaseCheckoutWizard(path, parent)
+ BaseCheckoutWizard(Constants::VCS_ID_CVS, parent)
{
- const Core::IVersionControl *vc = CvsPlugin::instance()->versionControl();
- if (!vc->isConfigured()) {
- auto configPage = new VcsConfigurationPage;
- configPage->setVersionControl(vc);
- addPage(configPage);
- }
auto cwp = new CheckoutWizardPage;
cwp->setPath(path.toString());
addPage(cwp);
@@ -69,22 +63,14 @@ VcsCommand *CheckoutWizard::createCommand(Utils::FileName *checkoutDir)
const CheckoutWizardPage *cwp = find<CheckoutWizardPage>();
QTC_ASSERT(cwp, return 0);
- const CvsSettings settings = CvsPlugin::instance()->client()->settings();
- const Utils::FileName binary = settings.binaryPath();
- QStringList args;
+ *checkoutDir = Utils::FileName::fromString(cwp->path() + QLatin1Char('/') + cwp->repository());
// cwp->repository() contains the CVS module to check out only.
// The CVSROOT (== actual repository) for that module is part of the CVS settings.
// The checkout will always go into a new subfolder named after the CVS module.
- const QString repository = cwp->repository();
- args << QLatin1String("checkout") << repository;
- const QString workingDirectory = cwp->path();
- *checkoutDir = Utils::FileName::fromString(workingDirectory + QLatin1Char('/') + repository);
-
- auto command = new VcsCommand(workingDirectory, QProcessEnvironment::systemEnvironment());
- command->addJob(binary, settings.addOptions(args), -1);
- return command;
+ return createCommandImpl(cwp->repository(), Utils::FileName::fromString(cwp->path()),
+ cwp->repository(), QStringList());
}
} // namespace Internal
diff --git a/src/plugins/git/clonewizard.cpp b/src/plugins/git/clonewizard.cpp
index 4229ba28385..4e2cfcb53ec 100644
--- a/src/plugins/git/clonewizard.cpp
+++ b/src/plugins/git/clonewizard.cpp
@@ -48,17 +48,11 @@ namespace Internal {
// --------------------------------------------------------------------
CloneWizard::CloneWizard(const Utils::FileName &path, QWidget *parent) :
- BaseCheckoutWizard(path, parent)
+ BaseCheckoutWizard(Constants::VCS_ID_GIT, parent)
{
setTitle(tr("Cloning"));
setStartedStatus(tr("Cloning started..."));
- const Internal::GitVersionControl *vc = Internal::GitPlugin::instance()->gitVersionControl();
- if (!vc->isConfigured()) {
- auto configPage = new VcsConfigurationPage;
- configPage->setVersionControl(vc);
- addPage(configPage);
- }
auto cwp = new CloneWizardPage;
cwp->setPath(path.toString());
addPage(cwp);
@@ -69,7 +63,22 @@ VcsCommand *CloneWizard::createCommand(Utils::FileName *checkoutDir)
// Collect parameters for the clone command.
const CloneWizardPage *cwp = find<CloneWizardPage>();
QTC_ASSERT(cwp, return 0);
- return cwp->createCheckoutJob(checkoutDir);
+
+ const QString baseDirectory = cwp->path();
+ const QString subDirectory = cwp->directory();
+
+ *checkoutDir = Utils::FileName::fromString(baseDirectory + QLatin1Char('/') + subDirectory);
+
+ const QString checkoutBranch = cwp->branch();
+
+ QStringList args;
+ if (!checkoutBranch.isEmpty())
+ args << QLatin1String("--branch") << checkoutBranch;
+ if (cwp->isRecursive())
+ args << QLatin1String("--recursive");
+
+ return createCommandImpl(cwp->repository(), Utils::FileName::fromString(baseDirectory),
+ subDirectory, args);
}
} // namespace Internal
diff --git a/src/plugins/git/clonewizardpage.cpp b/src/plugins/git/clonewizardpage.cpp
index cfeeae0c90b..feb936593b2 100644
--- a/src/plugins/git/clonewizardpage.cpp
+++ b/src/plugins/git/clonewizardpage.cpp
@@ -108,27 +108,6 @@ QString CloneWizardPage::directoryFromRepository(const QString &urlIn) const
return url;
}
-VcsCommand *CloneWizardPage::createCheckoutJob(Utils::FileName *checkoutPath) const
-{
- const Internal::GitClient *client = Internal::GitPlugin::instance()->client();
- const QString workingDirectory = path();
- const QString checkoutDir = directory();
- *checkoutPath = Utils::FileName::fromString(workingDirectory + QLatin1Char('/') + checkoutDir);
-
- const QString checkoutBranch = branch();
-
- QStringList args(QLatin1String("clone"));
- if (!checkoutBranch.isEmpty())
- args << QLatin1String("--branch") << checkoutBranch;
- if (d->recursiveCheckBox->isChecked())
- args << QLatin1String("--recursive");
- args << QLatin1String("--progress") << repository() << checkoutDir;
- auto command = new VcsCommand(workingDirectory, client->processEnvironment());
- command->addFlags(VcsCommand::MergeOutputChannels);
- command->addJob(client->vcsBinary(), args, -1);
- return command;
-}
-
QStringList CloneWizardPage::branches(const QString &repository, int *current)
{
// Run git on remote repository if an URL was specified.
@@ -142,6 +121,11 @@ QStringList CloneWizardPage::branches(const QString &repository, int *current)
return branches;
}
+bool CloneWizardPage::isRecursive() const
+{
+ return d->recursiveCheckBox->isChecked();
+}
+
} // namespace Git
#ifdef WITH_TESTS
diff --git a/src/plugins/git/clonewizardpage.h b/src/plugins/git/clonewizardpage.h
index 54b05638120..4b14c6a3d36 100644
--- a/src/plugins/git/clonewizardpage.h
+++ b/src/plugins/git/clonewizardpage.h
@@ -48,11 +48,11 @@ public:
explicit CloneWizardPage(QWidget *parent = 0);
~CloneWizardPage();
- VcsBase::VcsCommand *createCheckoutJob(Utils::FileName *checkoutPath) const;
+ QStringList branches(const QString &repository, int *current) override;
+ bool isRecursive() const;
protected:
QString directoryFromRepository(const QString &r) const override;
- QStringList branches(const QString &repository, int *current) override;
#ifdef WITH_TESTS
public:
diff --git a/src/plugins/mercurial/clonewizard.cpp b/src/plugins/mercurial/clonewizard.cpp
index 90339e34c24..1ac5e63fa58 100644
--- a/src/plugins/mercurial/clonewizard.cpp
+++ b/src/plugins/mercurial/clonewizard.cpp
@@ -50,17 +50,11 @@ namespace Internal {
// --------------------------------------------------------------------
CloneWizard::CloneWizard(const Utils::FileName &path, QWidget *parent) :
- BaseCheckoutWizard(path, parent)
+ BaseCheckoutWizard(Constants::VCS_ID_MERCURIAL, parent)
{
setTitle(tr("Cloning"));
setStartedStatus(tr("Cloning started..."));
- const Core::IVersionControl *vc = MercurialPlugin::instance()->versionControl();
- if (!vc->isConfigured()) {
- auto configPage = new VcsConfigurationPage;
- configPage->setVersionControl(vc);
- addPage(configPage);
- }
auto page = new CloneWizardPage;
page->setPath(path.toString());
addPage(page);
@@ -71,17 +65,12 @@ VcsCommand *CloneWizard::createCommand(Utils::FileName *checkoutDir)
const CloneWizardPage *cwp = find<CloneWizardPage>();
QTC_ASSERT(cwp, return 0);
- const VcsBaseClientSettings &settings = MercurialPlugin::client()->settings();
+ const Utils::FileName path = Utils::FileName::fromString(cwp->path());
+ const QString directory = cwp->directory();
- QString path = cwp->path();
- QString directory = cwp->directory();
+ *checkoutDir = Utils::FileName::fromString(path.toString() + QLatin1Char('/') + directory);
- QStringList args;
- args << QLatin1String("clone") << cwp->repository() << directory;
- *checkoutDir = Utils::FileName::fromString(path + QLatin1Char('/') + directory);
- auto command = new VcsCommand(path, QProcessEnvironment::systemEnvironment());
- command->addJob(settings.binaryPath(), args, -1);
- return command;
+ return createCommandImpl(cwp->repository(), path, directory, QStringList());
}
} // namespace Internal
diff --git a/src/plugins/subversion/checkoutwizard.cpp b/src/plugins/subversion/checkoutwizard.cpp
index ad631b9f30c..a1c6348a348 100644
--- a/src/plugins/subversion/checkoutwizard.cpp
+++ b/src/plugins/subversion/checkoutwizard.cpp
@@ -51,14 +51,8 @@ namespace Internal {
// --------------------------------------------------------------------
CheckoutWizard::CheckoutWizard(const FileName &path, QWidget *parent) :
- BaseCheckoutWizard(path, parent)
+ BaseCheckoutWizard(VcsBase::Constants::VCS_ID_SUBVERSION, parent)
{
- const Core::IVersionControl *vc = SubversionPlugin::instance()->versionControl();
- if (!vc->isConfigured()) {
- auto configPage = new VcsConfigurationPage;
- configPage->setVersionControl(vc);
- addPage(configPage);
- }
auto cwp = new CheckoutWizardPage;
cwp->setPath(path.toString());
addPage(cwp);
@@ -70,23 +64,16 @@ VcsCommand *CheckoutWizard::createCommand(FileName *checkoutDir)
const CheckoutWizardPage *cwp = find<CheckoutWizardPage>();
QTC_ASSERT(cwp, return 0);
- SubversionClient *client = SubversionPlugin::instance()->client();
- const VcsBaseClientSettings &settings = client->settings();
- const FileName binary = client->vcsBinary();
- const QString directory = cwp->directory();
QStringList args;
- args << QLatin1String("checkout");
- args << SubversionClient::addAuthenticationOptions(settings);
- args << QLatin1String(Constants::NON_INTERACTIVE_OPTION);
if (cwp->trustServerCert())
args << QLatin1String("--trust-server-cert");
- args << cwp->repository() << directory;
+ const QString directory = cwp->directory();
const QString workingDirectory = cwp->path();
+
*checkoutDir = FileName::fromString(workingDirectory + QLatin1Char('/') + directory);
- auto command = new VcsCommand(workingDirectory, QProcessEnvironment::systemEnvironment());
- command->addJob(binary, args, -1);
- return command;
+ return createCommandImpl(cwp->repository(), Utils::FileName::fromString(workingDirectory),
+ directory, args);
}
} // namespace Internal
diff --git a/src/plugins/vcsbase/basecheckoutwizard.cpp b/src/plugins/vcsbase/basecheckoutwizard.cpp
index d24e10a9406..6717a2d71df 100644
--- a/src/plugins/vcsbase/basecheckoutwizard.cpp
+++ b/src/plugins/vcsbase/basecheckoutwizard.cpp
@@ -31,6 +31,10 @@
#include "basecheckoutwizard.h"
#include "basecheckoutwizardfactory.h"
#include "vcscommand.h"
+#include "wizard/vcsconfigurationpage.h"
+
+#include <coreplugin/iversioncontrol.h>
+#include <coreplugin/vcsmanager.h>
#include <utils/qtcassert.h>
#include <utils/shellcommandpage.h>
@@ -46,16 +50,25 @@
namespace VcsBase {
-BaseCheckoutWizard::BaseCheckoutWizard(const Utils::FileName &path, QWidget *parent) :
+BaseCheckoutWizard::BaseCheckoutWizard(Core::Id vcsId, QWidget *parent) :
Utils::Wizard(parent),
m_progressPage(new Utils::ShellCommandPage),
- m_progressPageId(-1)
+ m_progressPageId(-1),
+ m_vcsId(vcsId)
{
- Q_UNUSED(path);
connect(this, &QWizard::currentIdChanged, this, &BaseCheckoutWizard::slotPageChanged);
connect(m_progressPage, &Utils::ShellCommandPage::finished,
this, &BaseCheckoutWizard::slotTerminated);
setOption(QWizard::NoBackButtonOnLastPage);
+
+ const Core::IVersionControl *vc = Core::VcsManager::versionControl(vcsId);
+ QTC_ASSERT(vc, return);
+
+ if (!vc->isConfigured()) {
+ auto configPage = new VcsConfigurationPage;
+ configPage->setVersionControl(vc);
+ addPage(configPage);
+ }
}
void BaseCheckoutWizard::setTitle(const QString &title)
@@ -97,6 +110,20 @@ Utils::FileName BaseCheckoutWizard::run()
return Utils::FileName();
}
+VcsCommand *BaseCheckoutWizard::createCommandImpl(const QString &url,
+ const Utils::FileName &baseDirectory,
+ const QString &localName,
+ const QStringList &extraArgs)
+{
+ Core::IVersionControl *vc = Core::VcsManager::versionControl(m_vcsId);
+ QTC_ASSERT(vc, return 0);
+ QTC_ASSERT(vc->isConfigured(), return 0);
+ QTC_ASSERT(vc->supportsOperation(Core::IVersionControl::InitialCheckoutOperation), return 0);
+
+ return static_cast<VcsCommand *>(vc->createInitialCheckoutCommand(url, baseDirectory,
+ localName, extraArgs));
+}
+
void BaseCheckoutWizard::reject()
{
// First click kills, 2nd closes
diff --git a/src/plugins/vcsbase/basecheckoutwizard.h b/src/plugins/vcsbase/basecheckoutwizard.h
index ff8f850d2b3..e014986117a 100644
--- a/src/plugins/vcsbase/basecheckoutwizard.h
+++ b/src/plugins/vcsbase/basecheckoutwizard.h
@@ -33,6 +33,8 @@
#include "vcsbase_global.h"
+#include <coreplugin/id.h>
+
#include <utils/fileutils.h>
#include <utils/wizard.h>
@@ -46,7 +48,7 @@ class VCSBASE_EXPORT BaseCheckoutWizard : public Utils::Wizard
Q_OBJECT
public:
- explicit BaseCheckoutWizard(const Utils::FileName &path, QWidget *parent = 0);
+ explicit BaseCheckoutWizard(Core::Id vcsId, QWidget *parent = 0);
void setTitle(const QString &title);
void setStartedStatus(const QString &title);
@@ -56,6 +58,11 @@ public:
protected:
virtual VcsBase::VcsCommand *createCommand(Utils::FileName *checkoutDir) = 0;
+ VcsBase::VcsCommand *createCommandImpl(const QString &url,
+ const Utils::FileName &baseDirectory,
+ const QString &localName,
+ const QStringList &extraArgs);
+
private slots:
void slotPageChanged(int id);
void slotTerminated(bool success);
@@ -63,8 +70,9 @@ private slots:
private:
Utils::ShellCommandPage *m_progressPage;
- int m_progressPageId;
Utils::FileName m_checkoutDir;
+ int m_progressPageId;
+ Core::Id m_vcsId;
};
} // namespace VcsBase