forked from qt-creator/qt-creator
Vcs: Move handling of settings from VcsBaseClient to VcsBaseClientImpl
... and update users of that functionality accordingly. Unexpected plus: Now every supported VCS actually saves their setting when requested. Change-Id: I02db7b2ce14e5f52d26409b2a01aea290c2a294a Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -68,13 +68,13 @@ class BazaarDiffParameterWidget : public VcsBaseEditorParameterWidget
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
BazaarDiffParameterWidget(BazaarSettings *settings, QWidget *parent = 0) :
|
BazaarDiffParameterWidget(VcsBaseClientSettings &settings, QWidget *parent = 0) :
|
||||||
VcsBaseEditorParameterWidget(parent)
|
VcsBaseEditorParameterWidget(parent)
|
||||||
{
|
{
|
||||||
mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace")),
|
mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace")),
|
||||||
settings->boolPointer(BazaarSettings::diffIgnoreWhiteSpaceKey));
|
settings.boolPointer(BazaarSettings::diffIgnoreWhiteSpaceKey));
|
||||||
mapSetting(addToggleButton(QLatin1String("-B"), tr("Ignore Blank Lines")),
|
mapSetting(addToggleButton(QLatin1String("-B"), tr("Ignore Blank Lines")),
|
||||||
settings->boolPointer(BazaarSettings::diffIgnoreBlankLinesKey));
|
settings.boolPointer(BazaarSettings::diffIgnoreBlankLinesKey));
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList arguments() const
|
QStringList arguments() const
|
||||||
@@ -95,18 +95,18 @@ class BazaarLogParameterWidget : public VcsBaseEditorParameterWidget
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
BazaarLogParameterWidget(BazaarSettings *settings, QWidget *parent = 0) :
|
BazaarLogParameterWidget(VcsBaseClientSettings &settings, QWidget *parent = 0) :
|
||||||
VcsBaseEditorParameterWidget(parent)
|
VcsBaseEditorParameterWidget(parent)
|
||||||
{
|
{
|
||||||
mapSetting(addToggleButton(QLatin1String("--verbose"), tr("Verbose"),
|
mapSetting(addToggleButton(QLatin1String("--verbose"), tr("Verbose"),
|
||||||
tr("Show files changed in each revision.")),
|
tr("Show files changed in each revision.")),
|
||||||
settings->boolPointer(BazaarSettings::logVerboseKey));
|
settings.boolPointer(BazaarSettings::logVerboseKey));
|
||||||
mapSetting(addToggleButton(QLatin1String("--forward"), tr("Forward"),
|
mapSetting(addToggleButton(QLatin1String("--forward"), tr("Forward"),
|
||||||
tr("Show from oldest to newest.")),
|
tr("Show from oldest to newest.")),
|
||||||
settings->boolPointer(BazaarSettings::logForwardKey));
|
settings.boolPointer(BazaarSettings::logForwardKey));
|
||||||
mapSetting(addToggleButton(QLatin1String("--include-merges"), tr("Include Merges"),
|
mapSetting(addToggleButton(QLatin1String("--include-merges"), tr("Include Merges"),
|
||||||
tr("Show merged revisions.")),
|
tr("Show merged revisions.")),
|
||||||
settings->boolPointer(BazaarSettings::logIncludeMergesKey));
|
settings.boolPointer(BazaarSettings::logIncludeMergesKey));
|
||||||
|
|
||||||
QList<ComboBoxItem> logChoices;
|
QList<ComboBoxItem> logChoices;
|
||||||
logChoices << ComboBoxItem(tr("Detailed"), QLatin1String("long"))
|
logChoices << ComboBoxItem(tr("Detailed"), QLatin1String("long"))
|
||||||
@@ -114,28 +114,23 @@ public:
|
|||||||
<< ComboBoxItem(tr("One Line"), QLatin1String("line"))
|
<< ComboBoxItem(tr("One Line"), QLatin1String("line"))
|
||||||
<< ComboBoxItem(tr("GNU Change Log"), QLatin1String("gnu-changelog"));
|
<< ComboBoxItem(tr("GNU Change Log"), QLatin1String("gnu-changelog"));
|
||||||
mapSetting(addComboBox(QStringList(QLatin1String("--log-format=%1")), logChoices),
|
mapSetting(addComboBox(QStringList(QLatin1String("--log-format=%1")), logChoices),
|
||||||
settings->stringPointer(BazaarSettings::logFormatKey));
|
settings.stringPointer(BazaarSettings::logFormatKey));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
BazaarClient::BazaarClient(BazaarSettings *settings) :
|
BazaarClient::BazaarClient() :
|
||||||
VcsBaseClient(settings)
|
VcsBaseClient(new BazaarSettings)
|
||||||
{
|
{
|
||||||
setDiffParameterWidgetCreator([=] { return new BazaarDiffParameterWidget(settings); });
|
setDiffParameterWidgetCreator([this] { return new BazaarDiffParameterWidget(settings()); });
|
||||||
setLogParameterWidgetCreator([=] { return new BazaarLogParameterWidget(settings); });
|
setLogParameterWidgetCreator([this] { return new BazaarLogParameterWidget(settings()); });
|
||||||
}
|
|
||||||
|
|
||||||
BazaarSettings *BazaarClient::settings() const
|
|
||||||
{
|
|
||||||
return dynamic_cast<BazaarSettings *>(VcsBaseClient::settings());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BazaarClient::synchronousSetUserId()
|
bool BazaarClient::synchronousSetUserId()
|
||||||
{
|
{
|
||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("whoami")
|
args << QLatin1String("whoami")
|
||||||
<< (settings()->stringValue(BazaarSettings::userNameKey) + QLatin1String(" <")
|
<< (settings().stringValue(BazaarSettings::userNameKey) + QLatin1String(" <")
|
||||||
+ settings()->stringValue(BazaarSettings::userEmailKey) + QLatin1Char('>'));
|
+ settings().stringValue(BazaarSettings::userEmailKey) + QLatin1Char('>'));
|
||||||
QByteArray stdOut;
|
QByteArray stdOut;
|
||||||
return vcsFullySynchronousExec(QDir::currentPath(), args, &stdOut);
|
return vcsFullySynchronousExec(QDir::currentPath(), args, &stdOut);
|
||||||
}
|
}
|
||||||
|
@@ -44,9 +44,7 @@ class BazaarClient : public VcsBase::VcsBaseClient
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BazaarClient(BazaarSettings *settings);
|
BazaarClient();
|
||||||
|
|
||||||
BazaarSettings *settings() const;
|
|
||||||
|
|
||||||
bool synchronousSetUserId();
|
bool synchronousSetUserId();
|
||||||
BranchInfo synchronousBranchQuery(const QString &repositoryRoot) const;
|
BranchInfo synchronousBranchQuery(const QString &repositoryRoot) const;
|
||||||
|
@@ -71,7 +71,7 @@ bool BazaarControl::managesFile(const QString &workingDirectory, const QString &
|
|||||||
|
|
||||||
bool BazaarControl::isConfigured() const
|
bool BazaarControl::isConfigured() const
|
||||||
{
|
{
|
||||||
const Utils::FileName binary = m_bazaarClient->settings()->binaryPath();
|
const Utils::FileName binary = m_bazaarClient->vcsBinary();
|
||||||
if (binary.isEmpty())
|
if (binary.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
QFileInfo fi = binary.toFileInfo();
|
QFileInfo fi = binary.toFileInfo();
|
||||||
@@ -148,8 +148,3 @@ void BazaarControl::changed(const QVariant &v)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BazaarControl::emitConfigurationChanged()
|
|
||||||
{
|
|
||||||
emit configurationChanged();
|
|
||||||
}
|
|
||||||
|
@@ -69,7 +69,6 @@ public slots:
|
|||||||
// files changed signals according to the variant's type:
|
// files changed signals according to the variant's type:
|
||||||
// String -> repository, StringList -> files
|
// String -> repository, StringList -> files
|
||||||
void changed(const QVariant &);
|
void changed(const QVariant &);
|
||||||
void emitConfigurationChanged();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BazaarClient *m_bazaarClient;
|
BazaarClient *m_bazaarClient;
|
||||||
|
@@ -165,12 +165,14 @@ bool BazaarPlugin::initialize(const QStringList &arguments, QString *errorMessag
|
|||||||
|
|
||||||
Context context(Constants::BAZAAR_CONTEXT);
|
Context context(Constants::BAZAAR_CONTEXT);
|
||||||
|
|
||||||
m_client = new BazaarClient(&m_bazaarSettings);
|
m_client = new BazaarClient;
|
||||||
auto vcsCtrl = new BazaarControl(m_client);
|
auto vcsCtrl = new BazaarControl(m_client);
|
||||||
initializeVcs(vcsCtrl, context);
|
initializeVcs(vcsCtrl, context);
|
||||||
|
|
||||||
addAutoReleasedObject(new OptionsPage);
|
auto options = new OptionsPage;
|
||||||
m_bazaarSettings.readSettings(ICore::settings());
|
connect(options, &OptionsPage::settingsChanged,
|
||||||
|
vcsCtrl, &Core::IVersionControl::configurationChanged);
|
||||||
|
addAutoReleasedObject(options);
|
||||||
|
|
||||||
connect(m_client, &VcsBaseClient::changed, vcsCtrl, &BazaarControl::changed);
|
connect(m_client, &VcsBaseClient::changed, vcsCtrl, &BazaarControl::changed);
|
||||||
|
|
||||||
@@ -214,22 +216,6 @@ BazaarClient *BazaarPlugin::client() const
|
|||||||
return m_client;
|
return m_client;
|
||||||
}
|
}
|
||||||
|
|
||||||
const BazaarSettings &BazaarPlugin::settings() const
|
|
||||||
{
|
|
||||||
return m_bazaarSettings;
|
|
||||||
}
|
|
||||||
|
|
||||||
void BazaarPlugin::setSettings(const BazaarSettings &settings)
|
|
||||||
{
|
|
||||||
if (settings != m_bazaarSettings) {
|
|
||||||
const bool userIdChanged = !m_bazaarSettings.sameUserId(settings);
|
|
||||||
m_bazaarSettings = settings;
|
|
||||||
if (userIdChanged)
|
|
||||||
client()->synchronousSetUserId();
|
|
||||||
static_cast<BazaarControl *>(versionControl())->emitConfigurationChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void BazaarPlugin::createMenu(const Context &context)
|
void BazaarPlugin::createMenu(const Context &context)
|
||||||
{
|
{
|
||||||
// Create menu item for Bazaar
|
// Create menu item for Bazaar
|
||||||
@@ -402,7 +388,7 @@ void BazaarPlugin::logRepository()
|
|||||||
const VcsBasePluginState state = currentState();
|
const VcsBasePluginState state = currentState();
|
||||||
QTC_ASSERT(state.hasTopLevel(), return);
|
QTC_ASSERT(state.hasTopLevel(), return);
|
||||||
QStringList extraOptions;
|
QStringList extraOptions;
|
||||||
extraOptions += QLatin1String("--limit=") + QString::number(settings().intValue(BazaarSettings::logCountKey));
|
extraOptions += QLatin1String("--limit=") + QString::number(m_client->settings().intValue(BazaarSettings::logCountKey));
|
||||||
m_client->log(state.topLevel(), QStringList(), extraOptions);
|
m_client->log(state.topLevel(), QStringList(), extraOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -606,9 +592,10 @@ void BazaarPlugin::showCommitWidget(const QList<VcsBaseClient::StatusItem> &stat
|
|||||||
commitEditor->document()->setPreferredDisplayName(msg);
|
commitEditor->document()->setPreferredDisplayName(msg);
|
||||||
|
|
||||||
const BranchInfo branch = m_client->synchronousBranchQuery(m_submitRepository);
|
const BranchInfo branch = m_client->synchronousBranchQuery(m_submitRepository);
|
||||||
|
const VcsBaseClientSettings &s = m_client->settings();
|
||||||
commitEditor->setFields(m_submitRepository, branch,
|
commitEditor->setFields(m_submitRepository, branch,
|
||||||
m_bazaarSettings.stringValue(BazaarSettings::userNameKey),
|
s.stringValue(BazaarSettings::userNameKey),
|
||||||
m_bazaarSettings.stringValue(BazaarSettings::userEmailKey), status);
|
s.stringValue(BazaarSettings::userEmailKey), status);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BazaarPlugin::diffFromEditorSelected(const QStringList &files)
|
void BazaarPlugin::diffFromEditorSelected(const QStringList &files)
|
||||||
|
@@ -70,9 +70,6 @@ public:
|
|||||||
static BazaarPlugin *instance();
|
static BazaarPlugin *instance();
|
||||||
BazaarClient *client() const;
|
BazaarClient *client() const;
|
||||||
|
|
||||||
const BazaarSettings &settings() const;
|
|
||||||
void setSettings(const BazaarSettings &settings);
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
// File menu action slots
|
// File menu action slots
|
||||||
void addCurrentFile();
|
void addCurrentFile();
|
||||||
|
@@ -79,7 +79,7 @@ VcsCommand *CloneWizard::createCommand(Utils::FileName *checkoutDir)
|
|||||||
if (!cwp)
|
if (!cwp)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
const BazaarSettings &settings = BazaarPlugin::instance()->settings();
|
const VcsBaseClientSettings &settings = BazaarPlugin::instance()->client()->settings();
|
||||||
*checkoutDir = Utils::FileName::fromString(cwp->path() + QLatin1Char('/') + cwp->directory());
|
*checkoutDir = Utils::FileName::fromString(cwp->path() + QLatin1Char('/') + cwp->directory());
|
||||||
|
|
||||||
const CloneOptionsPanel *panel = cwp->cloneOptionsPanel();
|
const CloneOptionsPanel *panel = cwp->cloneOptionsPanel();
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
#include "optionspage.h"
|
#include "optionspage.h"
|
||||||
|
#include "bazaarclient.h"
|
||||||
#include "bazaarsettings.h"
|
#include "bazaarsettings.h"
|
||||||
#include "bazaarplugin.h"
|
#include "bazaarplugin.h"
|
||||||
|
|
||||||
@@ -38,6 +39,7 @@
|
|||||||
|
|
||||||
using namespace Bazaar::Internal;
|
using namespace Bazaar::Internal;
|
||||||
using namespace Bazaar;
|
using namespace Bazaar;
|
||||||
|
using namespace VcsBase;
|
||||||
|
|
||||||
OptionsPageWidget::OptionsPageWidget(QWidget *parent)
|
OptionsPageWidget::OptionsPageWidget(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
@@ -48,9 +50,9 @@ OptionsPageWidget::OptionsPageWidget(QWidget *parent)
|
|||||||
m_ui.commandChooser->setHistoryCompleter(QLatin1String("Bazaar.Command.History"));
|
m_ui.commandChooser->setHistoryCompleter(QLatin1String("Bazaar.Command.History"));
|
||||||
}
|
}
|
||||||
|
|
||||||
BazaarSettings OptionsPageWidget::settings() const
|
VcsBaseClientSettings OptionsPageWidget::settings() const
|
||||||
{
|
{
|
||||||
BazaarSettings s = BazaarPlugin::instance()->settings();
|
VcsBaseClientSettings s = BazaarPlugin::instance()->client()->settings();
|
||||||
s.setValue(BazaarSettings::binaryPathKey, m_ui.commandChooser->rawPath());
|
s.setValue(BazaarSettings::binaryPathKey, m_ui.commandChooser->rawPath());
|
||||||
s.setValue(BazaarSettings::userNameKey, m_ui.defaultUsernameLineEdit->text().trimmed());
|
s.setValue(BazaarSettings::userNameKey, m_ui.defaultUsernameLineEdit->text().trimmed());
|
||||||
s.setValue(BazaarSettings::userEmailKey, m_ui.defaultEmailLineEdit->text().trimmed());
|
s.setValue(BazaarSettings::userEmailKey, m_ui.defaultEmailLineEdit->text().trimmed());
|
||||||
@@ -59,7 +61,7 @@ BazaarSettings OptionsPageWidget::settings() const
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsPageWidget::setSettings(const BazaarSettings &s)
|
void OptionsPageWidget::setSettings(const VcsBaseClientSettings &s)
|
||||||
{
|
{
|
||||||
m_ui.commandChooser->setPath(s.stringValue(BazaarSettings::binaryPathKey));
|
m_ui.commandChooser->setPath(s.stringValue(BazaarSettings::binaryPathKey));
|
||||||
m_ui.defaultUsernameLineEdit->setText(s.stringValue(BazaarSettings::userNameKey));
|
m_ui.defaultUsernameLineEdit->setText(s.stringValue(BazaarSettings::userNameKey));
|
||||||
@@ -78,7 +80,7 @@ QWidget *OptionsPage::widget()
|
|||||||
{
|
{
|
||||||
if (!m_optionsPageWidget)
|
if (!m_optionsPageWidget)
|
||||||
m_optionsPageWidget = new OptionsPageWidget;
|
m_optionsPageWidget = new OptionsPageWidget;
|
||||||
m_optionsPageWidget->setSettings(BazaarPlugin::instance()->settings());
|
m_optionsPageWidget->setSettings(BazaarPlugin::instance()->client()->settings());
|
||||||
return m_optionsPageWidget;
|
return m_optionsPageWidget;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,11 +89,10 @@ void OptionsPage::apply()
|
|||||||
if (!m_optionsPageWidget)
|
if (!m_optionsPageWidget)
|
||||||
return;
|
return;
|
||||||
BazaarPlugin *plugin = BazaarPlugin::instance();
|
BazaarPlugin *plugin = BazaarPlugin::instance();
|
||||||
const BazaarSettings newSettings = m_optionsPageWidget->settings();
|
const VcsBaseClientSettings newSettings = m_optionsPageWidget->settings();
|
||||||
if (newSettings != plugin->settings()) {
|
VcsBaseClientSettings &s = plugin->client()->settings();
|
||||||
//assume success and emit signal that settings are changed;
|
if (newSettings != s) {
|
||||||
plugin->setSettings(newSettings);
|
s = newSettings;
|
||||||
newSettings.writeSettings(Core::ICore::settings());
|
|
||||||
emit settingsChanged();
|
emit settingsChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -37,11 +37,13 @@
|
|||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
|
|
||||||
|
namespace VcsBase {
|
||||||
|
class VcsBaseClientSettings;
|
||||||
|
} // namespace VcsBase
|
||||||
|
|
||||||
namespace Bazaar {
|
namespace Bazaar {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class BazaarSettings;
|
|
||||||
|
|
||||||
class OptionsPageWidget : public QWidget
|
class OptionsPageWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -49,8 +51,8 @@ class OptionsPageWidget : public QWidget
|
|||||||
public:
|
public:
|
||||||
explicit OptionsPageWidget(QWidget *parent = 0);
|
explicit OptionsPageWidget(QWidget *parent = 0);
|
||||||
|
|
||||||
BazaarSettings settings() const;
|
VcsBase::VcsBaseClientSettings settings() const;
|
||||||
void setSettings(const BazaarSettings &s);
|
void setSettings(const VcsBase::VcsBaseClientSettings &s);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::OptionsPage m_ui;
|
Ui::OptionsPage m_ui;
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#include "checkoutwizard.h"
|
#include "checkoutwizard.h"
|
||||||
#include "checkoutwizardpage.h"
|
#include "checkoutwizardpage.h"
|
||||||
|
#include "cvsclient.h"
|
||||||
#include "cvsplugin.h"
|
#include "cvsplugin.h"
|
||||||
|
|
||||||
#include <coreplugin/iversioncontrol.h>
|
#include <coreplugin/iversioncontrol.h>
|
||||||
@@ -72,7 +73,7 @@ VcsCommand *CheckoutWizard::createCommand(Utils::FileName *checkoutDir)
|
|||||||
}
|
}
|
||||||
|
|
||||||
QTC_ASSERT(cwp, return 0);
|
QTC_ASSERT(cwp, return 0);
|
||||||
const CvsSettings settings = CvsPlugin::instance()->settings();
|
const CvsSettings settings = CvsPlugin::instance()->client()->settings();
|
||||||
const Utils::FileName binary = settings.binaryPath();
|
const Utils::FileName binary = settings.binaryPath();
|
||||||
QStringList args;
|
QStringList args;
|
||||||
|
|
||||||
|
@@ -70,40 +70,41 @@ class CvsDiffParameterWidget : public VcsBaseEditorParameterWidget
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit CvsDiffParameterWidget(CvsSettings *settings, QWidget *parent = 0);
|
explicit CvsDiffParameterWidget(VcsBaseClientSettings &settings, QWidget *parent = 0);
|
||||||
QStringList arguments() const;
|
QStringList arguments() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const CvsSettings *m_settings;
|
VcsBaseClientSettings &m_settings;
|
||||||
};
|
};
|
||||||
|
|
||||||
CvsDiffParameterWidget::CvsDiffParameterWidget(CvsSettings *settings, QWidget *parent)
|
CvsDiffParameterWidget::CvsDiffParameterWidget(VcsBaseClientSettings &settings,
|
||||||
: VcsBaseEditorParameterWidget(parent),
|
QWidget *parent) :
|
||||||
m_settings(settings)
|
VcsBaseEditorParameterWidget(parent),
|
||||||
|
m_settings(settings)
|
||||||
{
|
{
|
||||||
mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace")),
|
mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace")),
|
||||||
settings->boolPointer(CvsSettings::diffIgnoreWhiteSpaceKey));
|
settings.boolPointer(CvsSettings::diffIgnoreWhiteSpaceKey));
|
||||||
mapSetting(addToggleButton(QLatin1String("-B"), tr("Ignore Blank Lines")),
|
mapSetting(addToggleButton(QLatin1String("-B"), tr("Ignore Blank Lines")),
|
||||||
settings->boolPointer(CvsSettings::diffIgnoreBlankLinesKey));
|
settings.boolPointer(CvsSettings::diffIgnoreBlankLinesKey));
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList CvsDiffParameterWidget::arguments() const
|
QStringList CvsDiffParameterWidget::arguments() const
|
||||||
{
|
{
|
||||||
QStringList args;
|
QStringList args;
|
||||||
args = m_settings->stringValue(CvsSettings::diffOptionsKey).split(QLatin1Char(' '), QString::SkipEmptyParts);
|
args = m_settings.stringValue(CvsSettings::diffOptionsKey).split(QLatin1Char(' '),
|
||||||
|
QString::SkipEmptyParts);
|
||||||
args += VcsBaseEditorParameterWidget::arguments();
|
args += VcsBaseEditorParameterWidget::arguments();
|
||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
|
|
||||||
CvsClient::CvsClient(CvsSettings *settings) :
|
CvsClient::CvsClient() : VcsBaseClient(new CvsSettings)
|
||||||
VcsBaseClient(settings)
|
|
||||||
{
|
{
|
||||||
setDiffParameterWidgetCreator([=] { return new CvsDiffParameterWidget(settings); });
|
setDiffParameterWidgetCreator([this] { return new CvsDiffParameterWidget(settings()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
CvsSettings *CvsClient::settings() const
|
CvsSettings &CvsClient::settings() const
|
||||||
{
|
{
|
||||||
return dynamic_cast<CvsSettings *>(VcsBaseClient::settings());
|
return static_cast<CvsSettings &>(VcsBaseClient::settings());
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Id CvsClient::vcsEditorKind(VcsCommandTag cmd) const
|
Core::Id CvsClient::vcsEditorKind(VcsCommandTag cmd) const
|
||||||
|
@@ -44,9 +44,9 @@ class CvsClient : public VcsBase::VcsBaseClient
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CvsClient(CvsSettings *settings);
|
CvsClient();
|
||||||
|
|
||||||
CvsSettings *settings() const;
|
CvsSettings &settings() const;
|
||||||
void diff(const QString &workingDir, const QStringList &files,
|
void diff(const QString &workingDir, const QStringList &files,
|
||||||
const QStringList &extraOptions = QStringList());
|
const QStringList &extraOptions = QStringList());
|
||||||
QString findTopLevelForFile(const QFileInfo &file) const;
|
QString findTopLevelForFile(const QFileInfo &file) const;
|
||||||
|
@@ -29,6 +29,8 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "cvscontrol.h"
|
#include "cvscontrol.h"
|
||||||
|
|
||||||
|
#include "cvsclient.h"
|
||||||
#include "cvsplugin.h"
|
#include "cvsplugin.h"
|
||||||
#include "cvssettings.h"
|
#include "cvssettings.h"
|
||||||
|
|
||||||
@@ -58,7 +60,7 @@ Core::Id CvsControl::id() const
|
|||||||
|
|
||||||
bool CvsControl::isConfigured() const
|
bool CvsControl::isConfigured() const
|
||||||
{
|
{
|
||||||
const Utils::FileName binary = m_plugin->settings().binaryPath();
|
const Utils::FileName binary = m_plugin->client()->vcsBinary();
|
||||||
if (binary.isEmpty())
|
if (binary.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
QFileInfo fi = binary.toFileInfo();
|
QFileInfo fi = binary.toFileInfo();
|
||||||
@@ -149,8 +151,3 @@ void CvsControl::emitFilesChanged(const QStringList &l)
|
|||||||
{
|
{
|
||||||
emit filesChanged(l);
|
emit filesChanged(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CvsControl::emitConfigurationChanged()
|
|
||||||
{
|
|
||||||
emit configurationChanged();
|
|
||||||
}
|
|
||||||
|
@@ -65,7 +65,6 @@ public:
|
|||||||
|
|
||||||
void emitRepositoryChanged(const QString &s);
|
void emitRepositoryChanged(const QString &s);
|
||||||
void emitFilesChanged(const QStringList &l);
|
void emitFilesChanged(const QStringList &l);
|
||||||
void emitConfigurationChanged();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CvsPlugin *m_plugin;
|
CvsPlugin *m_plugin;
|
||||||
|
@@ -211,6 +211,12 @@ CvsPlugin::~CvsPlugin()
|
|||||||
cleanCommitMessageFile();
|
cleanCommitMessageFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CvsClient *CvsPlugin::client() const
|
||||||
|
{
|
||||||
|
QTC_CHECK(m_client);
|
||||||
|
return m_client;
|
||||||
|
}
|
||||||
|
|
||||||
void CvsPlugin::cleanCommitMessageFile()
|
void CvsPlugin::cleanCommitMessageFile()
|
||||||
{
|
{
|
||||||
if (!m_commitMessageFileName.isEmpty()) {
|
if (!m_commitMessageFileName.isEmpty()) {
|
||||||
@@ -246,9 +252,11 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
|
|||||||
|
|
||||||
Utils::MimeDatabase::addMimeTypes(QLatin1String(":/trolltech.cvs/CVS.mimetypes.xml"));
|
Utils::MimeDatabase::addMimeTypes(QLatin1String(":/trolltech.cvs/CVS.mimetypes.xml"));
|
||||||
|
|
||||||
m_settings.readSettings(ICore::settings());
|
m_client = new CvsClient;
|
||||||
m_client = new CvsClient(&m_settings);
|
|
||||||
|
|
||||||
|
auto options = new SettingsPage;
|
||||||
|
connect(options, &SettingsPage::settingsChanged,
|
||||||
|
versionControl(), &IVersionControl::configurationChanged);
|
||||||
addAutoReleasedObject(new SettingsPage);
|
addAutoReleasedObject(new SettingsPage);
|
||||||
|
|
||||||
addAutoReleasedObject(new VcsSubmitEditorFactory(&submitParameters,
|
addAutoReleasedObject(new VcsSubmitEditorFactory(&submitParameters,
|
||||||
@@ -503,12 +511,11 @@ bool CvsPlugin::submitEditorAboutToClose()
|
|||||||
|
|
||||||
// Prompt user. Force a prompt unless submit was actually invoked (that
|
// Prompt user. Force a prompt unless submit was actually invoked (that
|
||||||
// is, the editor was closed or shutdown).
|
// is, the editor was closed or shutdown).
|
||||||
CvsSettings newSettings = m_settings;
|
|
||||||
const VcsBaseSubmitEditor::PromptSubmitResult answer =
|
const VcsBaseSubmitEditor::PromptSubmitResult answer =
|
||||||
editor->promptSubmit(tr("Closing CVS Editor"),
|
editor->promptSubmit(tr("Closing CVS Editor"),
|
||||||
tr("Do you want to commit the change?"),
|
tr("Do you want to commit the change?"),
|
||||||
tr("The commit message check failed. Do you want to commit the change?"),
|
tr("The commit message check failed. Do you want to commit the change?"),
|
||||||
newSettings.boolPointer(CvsSettings::promptOnSubmitKey),
|
client()->settings().boolPointer(CvsSettings::promptOnSubmitKey),
|
||||||
!m_submitActionTriggered);
|
!m_submitActionTriggered);
|
||||||
m_submitActionTriggered = false;
|
m_submitActionTriggered = false;
|
||||||
switch (answer) {
|
switch (answer) {
|
||||||
@@ -520,7 +527,6 @@ bool CvsPlugin::submitEditorAboutToClose()
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
setSettings(newSettings); // in case someone turned prompting off
|
|
||||||
const QStringList fileList = editor->checkedFiles();
|
const QStringList fileList = editor->checkedFiles();
|
||||||
bool closeEditor = true;
|
bool closeEditor = true;
|
||||||
if (!fileList.empty()) {
|
if (!fileList.empty()) {
|
||||||
@@ -617,7 +623,7 @@ void CvsPlugin::revertAll()
|
|||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("update") << QLatin1String("-C") << state.topLevel();
|
args << QLatin1String("update") << QLatin1String("-C") << state.topLevel();
|
||||||
const CvsResponse revertResponse =
|
const CvsResponse revertResponse =
|
||||||
runCvs(state.topLevel(), args, m_settings.timeOutMs(),
|
runCvs(state.topLevel(), args, client()->vcsTimeout(),
|
||||||
SshPasswordPrompt|ShowStdOutInLogWindow);
|
SshPasswordPrompt|ShowStdOutInLogWindow);
|
||||||
if (revertResponse.result == CvsResponse::Ok)
|
if (revertResponse.result == CvsResponse::Ok)
|
||||||
cvsVersionControl()->emitRepositoryChanged(state.topLevel());
|
cvsVersionControl()->emitRepositoryChanged(state.topLevel());
|
||||||
@@ -633,7 +639,7 @@ void CvsPlugin::revertCurrentFile()
|
|||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("diff") << state.relativeCurrentFile();
|
args << QLatin1String("diff") << state.relativeCurrentFile();
|
||||||
const CvsResponse diffResponse =
|
const CvsResponse diffResponse =
|
||||||
runCvs(state.currentFileTopLevel(), args, m_settings.timeOutMs(), 0);
|
runCvs(state.currentFileTopLevel(), args, client()->vcsTimeout(), 0);
|
||||||
switch (diffResponse.result) {
|
switch (diffResponse.result) {
|
||||||
case CvsResponse::Ok:
|
case CvsResponse::Ok:
|
||||||
return; // Not modified, diff exit code 0
|
return; // Not modified, diff exit code 0
|
||||||
@@ -655,7 +661,7 @@ void CvsPlugin::revertCurrentFile()
|
|||||||
args.clear();
|
args.clear();
|
||||||
args << QLatin1String("update") << QLatin1String("-C") << state.relativeCurrentFile();
|
args << QLatin1String("update") << QLatin1String("-C") << state.relativeCurrentFile();
|
||||||
const CvsResponse revertResponse =
|
const CvsResponse revertResponse =
|
||||||
runCvs(state.currentFileTopLevel(), args, m_settings.timeOutMs(),
|
runCvs(state.currentFileTopLevel(), args, client()->vcsTimeout(),
|
||||||
SshPasswordPrompt|ShowStdOutInLogWindow);
|
SshPasswordPrompt|ShowStdOutInLogWindow);
|
||||||
if (revertResponse.result == CvsResponse::Ok)
|
if (revertResponse.result == CvsResponse::Ok)
|
||||||
cvsVersionControl()->emitFilesChanged(QStringList(state.currentFile()));
|
cvsVersionControl()->emitFilesChanged(QStringList(state.currentFile()));
|
||||||
@@ -717,7 +723,7 @@ void CvsPlugin::startCommit(const QString &workingDir, const QString &file)
|
|||||||
// where we are, so, have stdout/stderr channels merged.
|
// where we are, so, have stdout/stderr channels merged.
|
||||||
QStringList args = QStringList(QLatin1String("status"));
|
QStringList args = QStringList(QLatin1String("status"));
|
||||||
const CvsResponse response =
|
const CvsResponse response =
|
||||||
runCvs(workingDir, args, m_settings.timeOutMs(), MergeOutputChannels);
|
runCvs(workingDir, args, client()->vcsTimeout(), MergeOutputChannels);
|
||||||
if (response.result != CvsResponse::Ok)
|
if (response.result != CvsResponse::Ok)
|
||||||
return;
|
return;
|
||||||
// Get list of added/modified/deleted files and purge out undesired ones
|
// Get list of added/modified/deleted files and purge out undesired ones
|
||||||
@@ -765,7 +771,7 @@ bool CvsPlugin::commit(const QString &messageFile,
|
|||||||
args << QLatin1String("-F") << messageFile;
|
args << QLatin1String("-F") << messageFile;
|
||||||
args.append(fileList);
|
args.append(fileList);
|
||||||
const CvsResponse response =
|
const CvsResponse response =
|
||||||
runCvs(m_commitRepository, args, 10 * m_settings.timeOutMs(),
|
runCvs(m_commitRepository, args, 10 * client()->vcsTimeout(),
|
||||||
SshPasswordPrompt|ShowStdOutInLogWindow);
|
SshPasswordPrompt|ShowStdOutInLogWindow);
|
||||||
return response.result == CvsResponse::Ok ;
|
return response.result == CvsResponse::Ok ;
|
||||||
}
|
}
|
||||||
@@ -803,7 +809,7 @@ void CvsPlugin::filelog(const QString &workingDir,
|
|||||||
args << QLatin1String("log");
|
args << QLatin1String("log");
|
||||||
args.append(file);
|
args.append(file);
|
||||||
const CvsResponse response =
|
const CvsResponse response =
|
||||||
runCvs(workingDir, args, m_settings.timeOutMs(),
|
runCvs(workingDir, args, client()->vcsTimeout(),
|
||||||
SshPasswordPrompt, codec);
|
SshPasswordPrompt, codec);
|
||||||
if (response.result != CvsResponse::Ok)
|
if (response.result != CvsResponse::Ok)
|
||||||
return;
|
return;
|
||||||
@@ -844,7 +850,7 @@ bool CvsPlugin::update(const QString &topLevel, const QString &file)
|
|||||||
if (!file.isEmpty())
|
if (!file.isEmpty())
|
||||||
args.append(file);
|
args.append(file);
|
||||||
const CvsResponse response =
|
const CvsResponse response =
|
||||||
runCvs(topLevel, args, 10 * m_settings.timeOutMs(),
|
runCvs(topLevel, args, 10 * client()->vcsTimeout(),
|
||||||
SshPasswordPrompt|ShowStdOutInLogWindow);
|
SshPasswordPrompt|ShowStdOutInLogWindow);
|
||||||
const bool ok = response.result == CvsResponse::Ok;
|
const bool ok = response.result == CvsResponse::Ok;
|
||||||
if (ok)
|
if (ok)
|
||||||
@@ -891,7 +897,7 @@ bool CvsPlugin::edit(const QString &topLevel, const QStringList &files)
|
|||||||
QStringList args(QLatin1String("edit"));
|
QStringList args(QLatin1String("edit"));
|
||||||
args.append(files);
|
args.append(files);
|
||||||
const CvsResponse response =
|
const CvsResponse response =
|
||||||
runCvs(topLevel, args, m_settings.timeOutMs(),
|
runCvs(topLevel, args, client()->vcsTimeout(),
|
||||||
ShowStdOutInLogWindow|SshPasswordPrompt);
|
ShowStdOutInLogWindow|SshPasswordPrompt);
|
||||||
return response.result == CvsResponse::Ok;
|
return response.result == CvsResponse::Ok;
|
||||||
}
|
}
|
||||||
@@ -903,7 +909,7 @@ bool CvsPlugin::diffCheckModified(const QString &topLevel, const QStringList &fi
|
|||||||
QStringList args(QLatin1String("-q"));
|
QStringList args(QLatin1String("-q"));
|
||||||
args << QLatin1String("diff");
|
args << QLatin1String("diff");
|
||||||
args.append(files);
|
args.append(files);
|
||||||
const CvsResponse response = runCvs(topLevel, args, m_settings.timeOutMs(), 0);
|
const CvsResponse response = runCvs(topLevel, args, client()->vcsTimeout(), 0);
|
||||||
if (response.result == CvsResponse::OtherError)
|
if (response.result == CvsResponse::OtherError)
|
||||||
return false;
|
return false;
|
||||||
*modified = response.result == CvsResponse::NonNullExitCode;
|
*modified = response.result == CvsResponse::NonNullExitCode;
|
||||||
@@ -931,7 +937,7 @@ bool CvsPlugin::unedit(const QString &topLevel, const QStringList &files)
|
|||||||
args.append(QLatin1String("-y"));
|
args.append(QLatin1String("-y"));
|
||||||
args.append(files);
|
args.append(files);
|
||||||
const CvsResponse response =
|
const CvsResponse response =
|
||||||
runCvs(topLevel, args, m_settings.timeOutMs(),
|
runCvs(topLevel, args, client()->vcsTimeout(),
|
||||||
ShowStdOutInLogWindow|SshPasswordPrompt);
|
ShowStdOutInLogWindow|SshPasswordPrompt);
|
||||||
return response.result == CvsResponse::Ok;
|
return response.result == CvsResponse::Ok;
|
||||||
}
|
}
|
||||||
@@ -950,7 +956,7 @@ void CvsPlugin::annotate(const QString &workingDir, const QString &file,
|
|||||||
args << QLatin1String("-r") << revision;
|
args << QLatin1String("-r") << revision;
|
||||||
args << file;
|
args << file;
|
||||||
const CvsResponse response =
|
const CvsResponse response =
|
||||||
runCvs(workingDir, args, m_settings.timeOutMs(),
|
runCvs(workingDir, args, client()->vcsTimeout(),
|
||||||
SshPasswordPrompt, codec);
|
SshPasswordPrompt, codec);
|
||||||
if (response.result != CvsResponse::Ok)
|
if (response.result != CvsResponse::Ok)
|
||||||
return;
|
return;
|
||||||
@@ -979,7 +985,7 @@ bool CvsPlugin::status(const QString &topLevel, const QString &file, const QStri
|
|||||||
if (!file.isEmpty())
|
if (!file.isEmpty())
|
||||||
args.append(file);
|
args.append(file);
|
||||||
const CvsResponse response =
|
const CvsResponse response =
|
||||||
runCvs(topLevel, args, m_settings.timeOutMs(), 0);
|
runCvs(topLevel, args, client()->vcsTimeout(), 0);
|
||||||
const bool ok = response.result == CvsResponse::Ok;
|
const bool ok = response.result == CvsResponse::Ok;
|
||||||
if (ok)
|
if (ok)
|
||||||
showOutputInEditor(title, response.stdOut, OtherContent, topLevel, 0);
|
showOutputInEditor(title, response.stdOut, OtherContent, topLevel, 0);
|
||||||
@@ -1062,7 +1068,7 @@ bool CvsPlugin::describe(const QString &toplevel, const QString &file, const
|
|||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("log") << (QLatin1String("-r") + changeNr) << file;
|
args << QLatin1String("log") << (QLatin1String("-r") + changeNr) << file;
|
||||||
const CvsResponse logResponse =
|
const CvsResponse logResponse =
|
||||||
runCvs(toplevel, args, m_settings.timeOutMs(), SshPasswordPrompt);
|
runCvs(toplevel, args, client()->vcsTimeout(), SshPasswordPrompt);
|
||||||
if (logResponse.result != CvsResponse::Ok) {
|
if (logResponse.result != CvsResponse::Ok) {
|
||||||
*errorMessage = logResponse.message;
|
*errorMessage = logResponse.message;
|
||||||
return false;
|
return false;
|
||||||
@@ -1072,7 +1078,7 @@ bool CvsPlugin::describe(const QString &toplevel, const QString &file, const
|
|||||||
*errorMessage = msgLogParsingFailed();
|
*errorMessage = msgLogParsingFailed();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (m_settings.boolValue(CvsSettings::describeByCommitIdKey)) {
|
if (client()->settings().boolValue(CvsSettings::describeByCommitIdKey)) {
|
||||||
// Run a log command over the repo, filtering by the commit date
|
// Run a log command over the repo, filtering by the commit date
|
||||||
// and commit id, collecting all files touched by the commit.
|
// and commit id, collecting all files touched by the commit.
|
||||||
const QString commitId = fileLog.front().revisions.front().commitId;
|
const QString commitId = fileLog.front().revisions.front().commitId;
|
||||||
@@ -1084,7 +1090,7 @@ bool CvsPlugin::describe(const QString &toplevel, const QString &file, const
|
|||||||
args << QLatin1String("log") << QLatin1String("-d") << (dateS + QLatin1Char('<') + nextDayS);
|
args << QLatin1String("log") << QLatin1String("-d") << (dateS + QLatin1Char('<') + nextDayS);
|
||||||
|
|
||||||
const CvsResponse repoLogResponse =
|
const CvsResponse repoLogResponse =
|
||||||
runCvs(toplevel, args, 10 * m_settings.timeOutMs(), SshPasswordPrompt);
|
runCvs(toplevel, args, 10 * client()->vcsTimeout(), SshPasswordPrompt);
|
||||||
if (repoLogResponse.result != CvsResponse::Ok) {
|
if (repoLogResponse.result != CvsResponse::Ok) {
|
||||||
*errorMessage = repoLogResponse.message;
|
*errorMessage = repoLogResponse.message;
|
||||||
return false;
|
return false;
|
||||||
@@ -1121,7 +1127,7 @@ bool CvsPlugin::describe(const QString &repositoryPath,
|
|||||||
QStringList args(QLatin1String("log"));
|
QStringList args(QLatin1String("log"));
|
||||||
args << (QLatin1String("-r") + it->revisions.front().revision) << it->file;
|
args << (QLatin1String("-r") + it->revisions.front().revision) << it->file;
|
||||||
const CvsResponse logResponse =
|
const CvsResponse logResponse =
|
||||||
runCvs(repositoryPath, args, m_settings.timeOutMs(), SshPasswordPrompt);
|
runCvs(repositoryPath, args, client()->vcsTimeout(), SshPasswordPrompt);
|
||||||
if (logResponse.result != CvsResponse::Ok) {
|
if (logResponse.result != CvsResponse::Ok) {
|
||||||
*errorMessage = logResponse.message;
|
*errorMessage = logResponse.message;
|
||||||
return false;
|
return false;
|
||||||
@@ -1134,11 +1140,11 @@ bool CvsPlugin::describe(const QString &repositoryPath,
|
|||||||
if (!isFirstRevision(revision)) {
|
if (!isFirstRevision(revision)) {
|
||||||
const QString previousRev = previousRevision(revision);
|
const QString previousRev = previousRevision(revision);
|
||||||
QStringList args(QLatin1String("diff"));
|
QStringList args(QLatin1String("diff"));
|
||||||
args << m_settings.stringValue(CvsSettings::diffOptionsKey) << QLatin1String("-r") << previousRev
|
args << client()->settings().stringValue(CvsSettings::diffOptionsKey)
|
||||||
<< QLatin1String("-r") << it->revisions.front().revision
|
<< QLatin1String("-r") << previousRev << QLatin1String("-r")
|
||||||
<< it->file;
|
<< it->revisions.front().revision << it->file;
|
||||||
const CvsResponse diffResponse =
|
const CvsResponse diffResponse =
|
||||||
runCvs(repositoryPath, args, m_settings.timeOutMs(), 0, codec);
|
runCvs(repositoryPath, args, client()->vcsTimeout(), 0, codec);
|
||||||
switch (diffResponse.result) {
|
switch (diffResponse.result) {
|
||||||
case CvsResponse::Ok:
|
case CvsResponse::Ok:
|
||||||
case CvsResponse::NonNullExitCode: // Diff exit code != 0
|
case CvsResponse::NonNullExitCode: // Diff exit code != 0
|
||||||
@@ -1186,7 +1192,7 @@ CvsResponse CvsPlugin::runCvs(const QString &workingDirectory,
|
|||||||
unsigned flags,
|
unsigned flags,
|
||||||
QTextCodec *outputCodec) const
|
QTextCodec *outputCodec) const
|
||||||
{
|
{
|
||||||
const FileName executable = m_settings.binaryPath();
|
const FileName executable = client()->vcsBinary();
|
||||||
CvsResponse response;
|
CvsResponse response;
|
||||||
if (executable.isEmpty()) {
|
if (executable.isEmpty()) {
|
||||||
response.result = CvsResponse::OtherError;
|
response.result = CvsResponse::OtherError;
|
||||||
@@ -1195,7 +1201,7 @@ CvsResponse CvsPlugin::runCvs(const QString &workingDirectory,
|
|||||||
}
|
}
|
||||||
// Run, connect stderr to the output window
|
// Run, connect stderr to the output window
|
||||||
const SynchronousProcessResponse sp_resp =
|
const SynchronousProcessResponse sp_resp =
|
||||||
runVcs(workingDirectory, executable, m_settings.addOptions(arguments),
|
runVcs(workingDirectory, executable, client()->settings().addOptions(arguments),
|
||||||
timeOut, flags, outputCodec);
|
timeOut, flags, outputCodec);
|
||||||
|
|
||||||
response.result = CvsResponse::OtherError;
|
response.result = CvsResponse::OtherError;
|
||||||
@@ -1247,20 +1253,6 @@ IEditor *CvsPlugin::showOutputInEditor(const QString& title, const QString &outp
|
|||||||
return editor;
|
return editor;
|
||||||
}
|
}
|
||||||
|
|
||||||
CvsSettings CvsPlugin::settings() const
|
|
||||||
{
|
|
||||||
return m_settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CvsPlugin::setSettings(const CvsSettings &s)
|
|
||||||
{
|
|
||||||
if (s != m_settings) {
|
|
||||||
m_settings = s;
|
|
||||||
m_settings.writeSettings(ICore::settings());
|
|
||||||
cvsVersionControl()->emitConfigurationChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CvsPlugin *CvsPlugin::instance()
|
CvsPlugin *CvsPlugin::instance()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_cvsPluginInstance, return m_cvsPluginInstance);
|
QTC_ASSERT(m_cvsPluginInstance, return m_cvsPluginInstance);
|
||||||
@@ -1272,7 +1264,7 @@ bool CvsPlugin::vcsAdd(const QString &workingDir, const QString &rawFileName)
|
|||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("add") << rawFileName;
|
args << QLatin1String("add") << rawFileName;
|
||||||
const CvsResponse response =
|
const CvsResponse response =
|
||||||
runCvs(workingDir, args, m_settings.timeOutMs(),
|
runCvs(workingDir, args, client()->vcsTimeout(),
|
||||||
SshPasswordPrompt|ShowStdOutInLogWindow);
|
SshPasswordPrompt|ShowStdOutInLogWindow);
|
||||||
return response.result == CvsResponse::Ok;
|
return response.result == CvsResponse::Ok;
|
||||||
}
|
}
|
||||||
@@ -1282,7 +1274,7 @@ bool CvsPlugin::vcsDelete(const QString &workingDir, const QString &rawFileName)
|
|||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("remove") << QLatin1String("-f") << rawFileName;
|
args << QLatin1String("remove") << QLatin1String("-f") << rawFileName;
|
||||||
const CvsResponse response =
|
const CvsResponse response =
|
||||||
runCvs(workingDir, args, m_settings.timeOutMs(),
|
runCvs(workingDir, args, client()->vcsTimeout(),
|
||||||
SshPasswordPrompt|ShowStdOutInLogWindow);
|
SshPasswordPrompt|ShowStdOutInLogWindow);
|
||||||
return response.result == CvsResponse::Ok;
|
return response.result == CvsResponse::Ok;
|
||||||
}
|
}
|
||||||
@@ -1328,7 +1320,7 @@ bool CvsPlugin::managesFile(const QString &workingDirectory, const QString &file
|
|||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("status") << fileName;
|
args << QLatin1String("status") << fileName;
|
||||||
const CvsResponse response =
|
const CvsResponse response =
|
||||||
runCvs(workingDirectory, args, m_settings.timeOutMs(), SshPasswordPrompt);
|
runCvs(workingDirectory, args, client()->vcsTimeout(), SshPasswordPrompt);
|
||||||
if (response.result != CvsResponse::Ok)
|
if (response.result != CvsResponse::Ok)
|
||||||
return false;
|
return false;
|
||||||
return !response.stdOut.contains(QLatin1String("Status: Unknown"));
|
return !response.stdOut.contains(QLatin1String("Status: Unknown"));
|
||||||
|
@@ -78,13 +78,12 @@ public:
|
|||||||
CvsPlugin();
|
CvsPlugin();
|
||||||
~CvsPlugin();
|
~CvsPlugin();
|
||||||
|
|
||||||
|
CvsClient *client() const;
|
||||||
|
|
||||||
bool initialize(const QStringList &arguments, QString *errorMessage);
|
bool initialize(const QStringList &arguments, QString *errorMessage);
|
||||||
|
|
||||||
CvsSubmitEditor *openCVSSubmitEditor(const QString &fileName);
|
CvsSubmitEditor *openCVSSubmitEditor(const QString &fileName);
|
||||||
|
|
||||||
CvsSettings settings() const;
|
|
||||||
void setSettings(const CvsSettings &s);
|
|
||||||
|
|
||||||
// IVersionControl
|
// IVersionControl
|
||||||
bool vcsAdd(const QString &workingDir, const QString &fileName);
|
bool vcsAdd(const QString &workingDir, const QString &fileName);
|
||||||
bool vcsDelete(const QString &workingDir, const QString &fileName);
|
bool vcsDelete(const QString &workingDir, const QString &fileName);
|
||||||
|
@@ -29,6 +29,8 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "settingspage.h"
|
#include "settingspage.h"
|
||||||
|
|
||||||
|
#include "cvsclient.h"
|
||||||
#include "cvssettings.h"
|
#include "cvssettings.h"
|
||||||
#include "cvsplugin.h"
|
#include "cvsplugin.h"
|
||||||
|
|
||||||
@@ -43,6 +45,7 @@
|
|||||||
|
|
||||||
using namespace Cvs::Internal;
|
using namespace Cvs::Internal;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
using namespace VcsBase;
|
||||||
|
|
||||||
SettingsPageWidget::SettingsPageWidget(QWidget *parent) :
|
SettingsPageWidget::SettingsPageWidget(QWidget *parent) :
|
||||||
QWidget(parent)
|
QWidget(parent)
|
||||||
@@ -53,7 +56,7 @@ SettingsPageWidget::SettingsPageWidget(QWidget *parent) :
|
|||||||
m_ui.commandPathChooser->setPromptDialogTitle(tr("CVS Command"));
|
m_ui.commandPathChooser->setPromptDialogTitle(tr("CVS Command"));
|
||||||
}
|
}
|
||||||
|
|
||||||
CvsSettings SettingsPageWidget::settings() const
|
VcsBaseClientSettings SettingsPageWidget::settings() const
|
||||||
{
|
{
|
||||||
CvsSettings rc;
|
CvsSettings rc;
|
||||||
rc.setValue(CvsSettings::binaryPathKey, m_ui.commandPathChooser->rawPath());
|
rc.setValue(CvsSettings::binaryPathKey, m_ui.commandPathChooser->rawPath());
|
||||||
@@ -65,7 +68,7 @@ CvsSettings SettingsPageWidget::settings() const
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsPageWidget::setSettings(const CvsSettings &s)
|
void SettingsPageWidget::setSettings(const VcsBaseClientSettings &s)
|
||||||
{
|
{
|
||||||
m_ui.commandPathChooser->setFileName(s.binaryPath());
|
m_ui.commandPathChooser->setFileName(s.binaryPath());
|
||||||
m_ui.rootLineEdit->setText(s.stringValue(CvsSettings::cvsRootKey));
|
m_ui.rootLineEdit->setText(s.stringValue(CvsSettings::cvsRootKey));
|
||||||
@@ -85,14 +88,20 @@ QWidget *SettingsPage::widget()
|
|||||||
{
|
{
|
||||||
if (!m_widget) {
|
if (!m_widget) {
|
||||||
m_widget = new SettingsPageWidget;
|
m_widget = new SettingsPageWidget;
|
||||||
m_widget->setSettings(CvsPlugin::instance()->settings());
|
m_widget->setSettings(CvsPlugin::instance()->client()->settings());
|
||||||
}
|
}
|
||||||
return m_widget;
|
return m_widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsPage::apply()
|
void SettingsPage::apply()
|
||||||
{
|
{
|
||||||
CvsPlugin::instance()->setSettings(m_widget->settings());
|
VcsBaseClientSettings &s = CvsPlugin::instance()->client()->settings();
|
||||||
|
const VcsBaseClientSettings newSettings = m_widget->settings();
|
||||||
|
if (s != newSettings) {
|
||||||
|
s = newSettings;
|
||||||
|
s.writeSettings(Core::ICore::settings());
|
||||||
|
emit settingsChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsPage::finish()
|
void SettingsPage::finish()
|
||||||
|
@@ -43,11 +43,13 @@ QT_BEGIN_NAMESPACE
|
|||||||
class QSettings;
|
class QSettings;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
namespace VcsBase {
|
||||||
|
class VcsBaseClientSettings;
|
||||||
|
} // namespace VcsBase
|
||||||
|
|
||||||
namespace Cvs {
|
namespace Cvs {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class CvsSettings;
|
|
||||||
|
|
||||||
class SettingsPageWidget : public QWidget
|
class SettingsPageWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -55,8 +57,8 @@ class SettingsPageWidget : public QWidget
|
|||||||
public:
|
public:
|
||||||
explicit SettingsPageWidget(QWidget *parent = 0);
|
explicit SettingsPageWidget(QWidget *parent = 0);
|
||||||
|
|
||||||
CvsSettings settings() const;
|
VcsBase::VcsBaseClientSettings settings() const;
|
||||||
void setSettings(const CvsSettings &);
|
void setSettings(const VcsBase::VcsBaseClientSettings &);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SettingsPage m_ui;
|
Ui::SettingsPage m_ui;
|
||||||
@@ -74,6 +76,9 @@ public:
|
|||||||
void apply();
|
void apply();
|
||||||
void finish();
|
void finish();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void settingsChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPointer<SettingsPageWidget> m_widget;
|
QPointer<SettingsPageWidget> m_widget;
|
||||||
};
|
};
|
||||||
|
@@ -646,7 +646,7 @@ void BranchModel::parseOutputLine(const QString &line)
|
|||||||
const QString fullName = lineParts.at(1);
|
const QString fullName = lineParts.at(1);
|
||||||
|
|
||||||
bool current = (sha == m_currentSha);
|
bool current = (sha == m_currentSha);
|
||||||
bool showTags = m_client->settings()->boolValue(GitSettings::showTagsKey);
|
bool showTags = m_client->settings().boolValue(GitSettings::showTagsKey);
|
||||||
|
|
||||||
// insert node into tree:
|
// insert node into tree:
|
||||||
QStringList nameParts = fullName.split(QLatin1Char('/'));
|
QStringList nameParts = fullName.split(QLatin1Char('/'));
|
||||||
|
@@ -393,21 +393,19 @@ class BaseGitDiffArgumentsWidget : public VcsBaseEditorParameterWidget
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BaseGitDiffArgumentsWidget(GitSettings *settings, QWidget *parent = 0) :
|
BaseGitDiffArgumentsWidget(VcsBaseClientSettings &settings, QWidget *parent = 0) :
|
||||||
VcsBaseEditorParameterWidget(parent)
|
VcsBaseEditorParameterWidget(parent)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(settings, return);
|
|
||||||
|
|
||||||
m_patienceButton = addToggleButton(
|
m_patienceButton = addToggleButton(
|
||||||
QLatin1String("--patience"),
|
QLatin1String("--patience"),
|
||||||
tr("Patience"),
|
tr("Patience"),
|
||||||
tr("Use the patience algorithm for calculating the differences."));
|
tr("Use the patience algorithm for calculating the differences."));
|
||||||
mapSetting(m_patienceButton, settings->boolPointer(GitSettings::diffPatienceKey));
|
mapSetting(m_patienceButton, settings.boolPointer(GitSettings::diffPatienceKey));
|
||||||
m_ignoreWSButton = addToggleButton(
|
m_ignoreWSButton = addToggleButton(
|
||||||
QLatin1String("--ignore-space-change"), tr("Ignore Whitespace"),
|
QLatin1String("--ignore-space-change"), tr("Ignore Whitespace"),
|
||||||
tr("Ignore whitespace only changes."));
|
tr("Ignore whitespace only changes."));
|
||||||
mapSetting(m_ignoreWSButton,
|
mapSetting(m_ignoreWSButton,
|
||||||
settings->boolPointer(GitSettings::ignoreSpaceChangesInDiffKey));
|
settings.boolPointer(GitSettings::ignoreSpaceChangesInDiffKey));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -420,15 +418,15 @@ class GitBlameArgumentsWidget : public VcsBaseEditorParameterWidget
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GitBlameArgumentsWidget(GitSettings *settings, QWidget *parent = 0) :
|
GitBlameArgumentsWidget(VcsBaseClientSettings &settings, QWidget *parent = 0) :
|
||||||
VcsBaseEditorParameterWidget(parent)
|
VcsBaseEditorParameterWidget(parent)
|
||||||
{
|
{
|
||||||
mapSetting(addToggleButton(QString(), tr("Omit Date"),
|
mapSetting(addToggleButton(QString(), tr("Omit Date"),
|
||||||
tr("Hide the date of a change from the output.")),
|
tr("Hide the date of a change from the output.")),
|
||||||
settings->boolPointer(GitSettings::omitAnnotationDateKey));
|
settings.boolPointer(GitSettings::omitAnnotationDateKey));
|
||||||
mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace"),
|
mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace"),
|
||||||
tr("Ignore whitespace only changes.")),
|
tr("Ignore whitespace only changes.")),
|
||||||
settings->boolPointer(GitSettings::ignoreSpaceChangesInBlameKey));
|
settings.boolPointer(GitSettings::ignoreSpaceChangesInBlameKey));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -437,12 +435,12 @@ class GitLogArgumentsWidget : public BaseGitDiffArgumentsWidget
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GitLogArgumentsWidget(GitSettings *settings, QWidget *parent = 0) :
|
GitLogArgumentsWidget(VcsBaseClientSettings &settings, QWidget *parent = 0) :
|
||||||
BaseGitDiffArgumentsWidget(settings, parent)
|
BaseGitDiffArgumentsWidget(settings, parent)
|
||||||
{
|
{
|
||||||
QToolButton *diffButton = addToggleButton(QLatin1String("--patch"), tr("Show Diff"),
|
QToolButton *diffButton = addToggleButton(QLatin1String("--patch"), tr("Show Diff"),
|
||||||
tr("Show difference."));
|
tr("Show difference."));
|
||||||
mapSetting(diffButton, settings->boolPointer(GitSettings::logDiffKey));
|
mapSetting(diffButton, settings.boolPointer(GitSettings::logDiffKey));
|
||||||
connect(diffButton, &QToolButton::toggled, m_patienceButton, &QToolButton::setVisible);
|
connect(diffButton, &QToolButton::toggled, m_patienceButton, &QToolButton::setVisible);
|
||||||
connect(diffButton, &QToolButton::toggled, m_ignoreWSButton, &QToolButton::setVisible);
|
connect(diffButton, &QToolButton::toggled, m_ignoreWSButton, &QToolButton::setVisible);
|
||||||
m_patienceButton->setVisible(diffButton->isChecked());
|
m_patienceButton->setVisible(diffButton->isChecked());
|
||||||
@@ -452,7 +450,7 @@ public:
|
|||||||
graphArguments << (QLatin1String("--pretty=format:") + QLatin1String(graphLogFormatC));
|
graphArguments << (QLatin1String("--pretty=format:") + QLatin1String(graphLogFormatC));
|
||||||
QToolButton *graphButton = addToggleButton(graphArguments, tr("Graph"),
|
QToolButton *graphButton = addToggleButton(graphArguments, tr("Graph"),
|
||||||
tr("Show textual graph log."));
|
tr("Show textual graph log."));
|
||||||
mapSetting(graphButton, settings->boolPointer(GitSettings::graphLogKey));
|
mapSetting(graphButton, settings.boolPointer(GitSettings::graphLogKey));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -605,13 +603,10 @@ static inline void msgCannotRun(const QStringList &args, const QString &workingD
|
|||||||
|
|
||||||
const char *GitClient::stashNamePrefix = "stash@{";
|
const char *GitClient::stashNamePrefix = "stash@{";
|
||||||
|
|
||||||
GitClient::GitClient(GitSettings *settings) :
|
GitClient::GitClient() : VcsBase::VcsBaseClientImpl(new GitSettings),
|
||||||
m_cachedGitVersion(0),
|
m_cachedGitVersion(0),
|
||||||
m_settings(settings),
|
|
||||||
m_disableEditor(false)
|
m_disableEditor(false)
|
||||||
{
|
{
|
||||||
QTC_CHECK(settings);
|
|
||||||
connect(ICore::instance(), &ICore::saveSettingsRequested, this, &GitClient::saveSettings);
|
|
||||||
m_gitQtcEditor = QString::fromLatin1("\"%1\" -client -block -pid %2")
|
m_gitQtcEditor = QString::fromLatin1("\"%1\" -client -block -pid %2")
|
||||||
.arg(QCoreApplication::applicationFilePath())
|
.arg(QCoreApplication::applicationFilePath())
|
||||||
.arg(QCoreApplication::applicationPid());
|
.arg(QCoreApplication::applicationPid());
|
||||||
@@ -908,7 +903,7 @@ void GitClient::log(const QString &workingDirectory, const QString &fileName,
|
|||||||
arguments << QLatin1String("log") << QLatin1String(noColorOption)
|
arguments << QLatin1String("log") << QLatin1String(noColorOption)
|
||||||
<< QLatin1String(decorateOption);
|
<< QLatin1String(decorateOption);
|
||||||
|
|
||||||
int logCount = settings()->intValue(GitSettings::logCountKey);
|
int logCount = settings().intValue(GitSettings::logCountKey);
|
||||||
if (logCount > 0)
|
if (logCount > 0)
|
||||||
arguments << QLatin1String("-n") << QString::number(logCount);
|
arguments << QLatin1String("-n") << QString::number(logCount);
|
||||||
|
|
||||||
@@ -939,7 +934,7 @@ void GitClient::reflog(const QString &workingDirectory)
|
|||||||
arguments << QLatin1String("reflog") << QLatin1String(noColorOption)
|
arguments << QLatin1String("reflog") << QLatin1String(noColorOption)
|
||||||
<< QLatin1String(decorateOption);
|
<< QLatin1String(decorateOption);
|
||||||
|
|
||||||
int logCount = settings()->intValue(GitSettings::logCountKey);
|
int logCount = settings().intValue(GitSettings::logCountKey);
|
||||||
if (logCount > 0)
|
if (logCount > 0)
|
||||||
arguments << QLatin1String("-n") << QString::number(logCount);
|
arguments << QLatin1String("-n") << QString::number(logCount);
|
||||||
|
|
||||||
@@ -983,11 +978,6 @@ void GitClient::show(const QString &source, const QString &id, const QString &na
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitClient::saveSettings()
|
|
||||||
{
|
|
||||||
settings()->writeSettings(ICore::settings());
|
|
||||||
}
|
|
||||||
|
|
||||||
void GitClient::slotBlameRevisionRequested(const QString &workingDirectory, const QString &file,
|
void GitClient::slotBlameRevisionRequested(const QString &workingDirectory, const QString &file,
|
||||||
QString change, int lineNumber)
|
QString change, int lineNumber)
|
||||||
{
|
{
|
||||||
@@ -2027,14 +2017,14 @@ VcsCommand *GitClient::executeGit(const QString &workingDirectory,
|
|||||||
QProcessEnvironment GitClient::processEnvironment() const
|
QProcessEnvironment GitClient::processEnvironment() const
|
||||||
{
|
{
|
||||||
QProcessEnvironment environment = QProcessEnvironment::systemEnvironment();
|
QProcessEnvironment environment = QProcessEnvironment::systemEnvironment();
|
||||||
QString gitPath = settings()->stringValue(GitSettings::pathKey);
|
QString gitPath = settings().stringValue(GitSettings::pathKey);
|
||||||
if (!gitPath.isEmpty()) {
|
if (!gitPath.isEmpty()) {
|
||||||
gitPath += HostOsInfo::pathListSeparator();
|
gitPath += HostOsInfo::pathListSeparator();
|
||||||
gitPath += environment.value(QLatin1String("PATH"));
|
gitPath += environment.value(QLatin1String("PATH"));
|
||||||
environment.insert(QLatin1String("PATH"), gitPath);
|
environment.insert(QLatin1String("PATH"), gitPath);
|
||||||
}
|
}
|
||||||
if (HostOsInfo::isWindowsHost()
|
if (HostOsInfo::isWindowsHost()
|
||||||
&& settings()->boolValue(GitSettings::winSetHomeEnvironmentKey)) {
|
&& settings().boolValue(GitSettings::winSetHomeEnvironmentKey)) {
|
||||||
environment.insert(QLatin1String("HOME"), QDir::toNativeSeparators(QDir::homePath()));
|
environment.insert(QLatin1String("HOME"), QDir::toNativeSeparators(QDir::homePath()));
|
||||||
}
|
}
|
||||||
environment.insert(QLatin1String("GIT_EDITOR"), m_disableEditor ? QLatin1String("true") : m_gitQtcEditor);
|
environment.insert(QLatin1String("GIT_EDITOR"), m_disableEditor ? QLatin1String("true") : m_gitQtcEditor);
|
||||||
@@ -2414,7 +2404,7 @@ void GitClient::launchGitK(const QString &workingDirectory, const QString &fileN
|
|||||||
|
|
||||||
void GitClient::launchRepositoryBrowser(const QString &workingDirectory)
|
void GitClient::launchRepositoryBrowser(const QString &workingDirectory)
|
||||||
{
|
{
|
||||||
const QString repBrowserBinary = settings()->stringValue(GitSettings::repositoryBrowserCmd);
|
const QString repBrowserBinary = settings().stringValue(GitSettings::repositoryBrowserCmd);
|
||||||
if (!repBrowserBinary.isEmpty())
|
if (!repBrowserBinary.isEmpty())
|
||||||
QProcess::startDetached(repBrowserBinary, QStringList(workingDirectory), workingDirectory);
|
QProcess::startDetached(repBrowserBinary, QStringList(workingDirectory), workingDirectory);
|
||||||
}
|
}
|
||||||
@@ -2434,7 +2424,7 @@ bool GitClient::tryLauchingGitK(const QProcessEnvironment &env,
|
|||||||
binary = wish;
|
binary = wish;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const QString gitkOpts = settings()->stringValue(GitSettings::gitkOptionsKey);
|
const QString gitkOpts = settings().stringValue(GitSettings::gitkOptionsKey);
|
||||||
if (!gitkOpts.isEmpty())
|
if (!gitkOpts.isEmpty())
|
||||||
arguments.append(QtcProcess::splitArgs(gitkOpts, HostOsInfo::hostOs()));
|
arguments.append(QtcProcess::splitArgs(gitkOpts, HostOsInfo::hostOs()));
|
||||||
if (!fileName.isEmpty())
|
if (!fileName.isEmpty())
|
||||||
@@ -2443,7 +2433,7 @@ bool GitClient::tryLauchingGitK(const QProcessEnvironment &env,
|
|||||||
// This should always use QProcess::startDetached (as not to kill
|
// This should always use QProcess::startDetached (as not to kill
|
||||||
// the child), but that does not have an environment parameter.
|
// the child), but that does not have an environment parameter.
|
||||||
bool success = false;
|
bool success = false;
|
||||||
if (!settings()->stringValue(GitSettings::pathKey).isEmpty()) {
|
if (!settings().stringValue(GitSettings::pathKey).isEmpty()) {
|
||||||
auto process = new QProcess(this);
|
auto process = new QProcess(this);
|
||||||
process->setWorkingDirectory(workingDirectory);
|
process->setWorkingDirectory(workingDirectory);
|
||||||
process->setProcessEnvironment(env);
|
process->setProcessEnvironment(env);
|
||||||
@@ -2495,12 +2485,12 @@ FileName GitClient::gitBinDirectory()
|
|||||||
|
|
||||||
FileName GitClient::vcsBinary(bool *ok, QString *errorMessage) const
|
FileName GitClient::vcsBinary(bool *ok, QString *errorMessage) const
|
||||||
{
|
{
|
||||||
return settings()->gitExecutable(ok, errorMessage);
|
return static_cast<GitSettings &>(settings()).gitExecutable(ok, errorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
int GitClient::vcsTimeout() const
|
int GitClient::vcsTimeout() const
|
||||||
{
|
{
|
||||||
return settings()->intValue(GitSettings::timeoutKey);
|
return settings().intValue(GitSettings::timeoutKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextCodec *GitClient::encoding(const QString &workingDirectory, const QByteArray &configVar) const
|
QTextCodec *GitClient::encoding(const QString &workingDirectory, const QByteArray &configVar) const
|
||||||
@@ -3060,7 +3050,7 @@ void GitClient::subversionLog(const QString &workingDirectory)
|
|||||||
{
|
{
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("svn") << QLatin1String("log");
|
arguments << QLatin1String("svn") << QLatin1String("log");
|
||||||
int logCount = settings()->intValue(GitSettings::logCountKey);
|
int logCount = settings().intValue(GitSettings::logCountKey);
|
||||||
if (logCount > 0)
|
if (logCount > 0)
|
||||||
arguments << (QLatin1String("--limit=") + QString::number(logCount));
|
arguments << (QLatin1String("--limit=") + QString::number(logCount));
|
||||||
|
|
||||||
@@ -3131,7 +3121,7 @@ void GitClient::asyncCommand(const QString &workingDirectory, const QStringList
|
|||||||
// Git might request an editor, so this must be done asynchronously
|
// Git might request an editor, so this must be done asynchronously
|
||||||
// and without timeout
|
// and without timeout
|
||||||
QString gitCommand = arguments.first();
|
QString gitCommand = arguments.first();
|
||||||
VcsOutputWindow::appendCommand(workingDirectory, settings()->binaryPath(), arguments);
|
VcsOutputWindow::appendCommand(workingDirectory, vcsBinary(), arguments);
|
||||||
VcsCommand *command = createCommand(workingDirectory, 0, VcsWindowOutputBind);
|
VcsCommand *command = createCommand(workingDirectory, 0, VcsWindowOutputBind);
|
||||||
new ConflictHandler(command, workingDirectory, gitCommand);
|
new ConflictHandler(command, workingDirectory, gitCommand);
|
||||||
if (hasProgress)
|
if (hasProgress)
|
||||||
@@ -3176,7 +3166,7 @@ void GitClient::interactiveRebase(const QString &workingDirectory, const QString
|
|||||||
if (fixup)
|
if (fixup)
|
||||||
arguments << QLatin1String("--autosquash");
|
arguments << QLatin1String("--autosquash");
|
||||||
arguments << commit + QLatin1Char('^');
|
arguments << commit + QLatin1Char('^');
|
||||||
VcsOutputWindow::appendCommand(workingDirectory, settings()->binaryPath(), arguments);
|
VcsOutputWindow::appendCommand(workingDirectory, vcsBinary(), arguments);
|
||||||
if (fixup)
|
if (fixup)
|
||||||
m_disableEditor = true;
|
m_disableEditor = true;
|
||||||
asyncCommand(workingDirectory, arguments, true);
|
asyncCommand(workingDirectory, arguments, true);
|
||||||
@@ -3333,11 +3323,6 @@ bool GitClient::cloneRepository(const QString &directory,const QByteArray &url)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GitSettings *GitClient::settings() const
|
|
||||||
{
|
|
||||||
return m_settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
// determine version as '(major << 16) + (minor << 8) + patch' or 0.
|
// determine version as '(major << 16) + (minor << 8) + patch' or 0.
|
||||||
unsigned GitClient::gitVersion(QString *errorMessage) const
|
unsigned GitClient::gitVersion(QString *errorMessage) const
|
||||||
{
|
{
|
||||||
|
@@ -138,7 +138,7 @@ public:
|
|||||||
|
|
||||||
static const char *stashNamePrefix;
|
static const char *stashNamePrefix;
|
||||||
|
|
||||||
explicit GitClient(GitSettings *settings);
|
explicit GitClient();
|
||||||
|
|
||||||
Utils::FileName vcsBinary(bool *ok = 0, QString *errorMessage = 0) const;
|
Utils::FileName vcsBinary(bool *ok = 0, QString *errorMessage = 0) const;
|
||||||
int vcsTimeout() const;
|
int vcsTimeout() const;
|
||||||
@@ -331,8 +331,6 @@ public:
|
|||||||
QStringList synchronousRepositoryBranches(const QString &repositoryURL,
|
QStringList synchronousRepositoryBranches(const QString &repositoryURL,
|
||||||
const QString &workingDirectory = QString()) const;
|
const QString &workingDirectory = QString()) const;
|
||||||
|
|
||||||
GitSettings *settings() const;
|
|
||||||
|
|
||||||
QProcessEnvironment processEnvironment() const;
|
QProcessEnvironment processEnvironment() const;
|
||||||
|
|
||||||
bool beginStashScope(const QString &workingDirectory, const QString &command,
|
bool beginStashScope(const QString &workingDirectory, const QString &command,
|
||||||
@@ -350,7 +348,6 @@ public slots:
|
|||||||
void show(const QString &source,
|
void show(const QString &source,
|
||||||
const QString &id,
|
const QString &id,
|
||||||
const QString &name = QString());
|
const QString &name = QString());
|
||||||
void saveSettings();
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void slotBlameRevisionRequested(const QString &workingDirectory, const QString &file,
|
void slotBlameRevisionRequested(const QString &workingDirectory, const QString &file,
|
||||||
@@ -441,7 +438,6 @@ private:
|
|||||||
mutable Utils::FileName m_gitVersionForBinary;
|
mutable Utils::FileName m_gitVersionForBinary;
|
||||||
mutable unsigned m_cachedGitVersion;
|
mutable unsigned m_cachedGitVersion;
|
||||||
|
|
||||||
GitSettings *m_settings;
|
|
||||||
QString m_gitQtcEditor;
|
QString m_gitQtcEditor;
|
||||||
QMap<QString, StashInfo> m_stashInfo;
|
QMap<QString, StashInfo> m_stashInfo;
|
||||||
QStringList m_updatedSubmodules;
|
QStringList m_updatedSubmodules;
|
||||||
|
@@ -184,7 +184,8 @@ void GitEditorWidget::setPlainTextFiltered(const QString &text)
|
|||||||
switch (contentType())
|
switch (contentType())
|
||||||
{
|
{
|
||||||
case AnnotateOutput: {
|
case AnnotateOutput: {
|
||||||
const bool omitAnnotationDate = plugin->settings().boolValue(GitSettings::omitAnnotationDateKey);
|
const bool omitAnnotationDate
|
||||||
|
= plugin->gitClient()->settings().boolValue(GitSettings::omitAnnotationDateKey);
|
||||||
if (omitAnnotationDate)
|
if (omitAnnotationDate)
|
||||||
modText = removeAnnotationDate(text);
|
modText = removeAnnotationDate(text);
|
||||||
break;
|
break;
|
||||||
|
@@ -274,14 +274,15 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
|
|||||||
|
|
||||||
Context context(Constants::GIT_CONTEXT);
|
Context context(Constants::GIT_CONTEXT);
|
||||||
|
|
||||||
m_settings.readSettings(ICore::settings());
|
m_gitClient = new GitClient;
|
||||||
|
|
||||||
m_gitClient = new GitClient(&m_settings);
|
|
||||||
|
|
||||||
initializeVcs(new GitVersionControl(m_gitClient), context);
|
initializeVcs(new GitVersionControl(m_gitClient), context);
|
||||||
|
|
||||||
// Create the settings Page
|
// Create the settings Page
|
||||||
addAutoReleasedObject(new SettingsPage());
|
SettingsPage *options = new SettingsPage;
|
||||||
|
connect(options, &SettingsPage::settingsChanged,
|
||||||
|
versionControl(), &IVersionControl::configurationChanged);
|
||||||
|
addAutoReleasedObject(options);
|
||||||
|
|
||||||
static const char *describeSlot = SLOT(show(QString,QString));
|
static const char *describeSlot = SLOT(show(QString,QString));
|
||||||
const int editorCount = sizeof(editorParameters) / sizeof(editorParameters[0]);
|
const int editorCount = sizeof(editorParameters) / sizeof(editorParameters[0]);
|
||||||
@@ -1109,7 +1110,7 @@ void GitPlugin::pull()
|
|||||||
const VcsBasePluginState state = currentState();
|
const VcsBasePluginState state = currentState();
|
||||||
QTC_ASSERT(state.hasTopLevel(), return);
|
QTC_ASSERT(state.hasTopLevel(), return);
|
||||||
QString topLevel = state.topLevel();
|
QString topLevel = state.topLevel();
|
||||||
bool rebase = m_settings.boolValue(GitSettings::pullRebaseKey);
|
bool rebase = gitClient()->settings().boolValue(GitSettings::pullRebaseKey);
|
||||||
|
|
||||||
if (!rebase) {
|
if (!rebase) {
|
||||||
QString currentBranch = m_gitClient->synchronousCurrentLocalBranch(topLevel);
|
QString currentBranch = m_gitClient->synchronousCurrentLocalBranch(topLevel);
|
||||||
@@ -1415,26 +1416,11 @@ void GitPlugin::updateBranches(const QString &repository)
|
|||||||
void GitPlugin::updateRepositoryBrowserAction()
|
void GitPlugin::updateRepositoryBrowserAction()
|
||||||
{
|
{
|
||||||
const bool repositoryEnabled = currentState().hasTopLevel();
|
const bool repositoryEnabled = currentState().hasTopLevel();
|
||||||
const bool hasRepositoryBrowserCmd = !m_settings.stringValue(GitSettings::repositoryBrowserCmd).isEmpty();
|
const bool hasRepositoryBrowserCmd
|
||||||
|
= !gitClient()->settings().stringValue(GitSettings::repositoryBrowserCmd).isEmpty();
|
||||||
m_repositoryBrowserAction->setEnabled(repositoryEnabled && hasRepositoryBrowserCmd);
|
m_repositoryBrowserAction->setEnabled(repositoryEnabled && hasRepositoryBrowserCmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
const GitSettings &GitPlugin::settings() const
|
|
||||||
{
|
|
||||||
return m_settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GitPlugin::setSettings(const GitSettings &s)
|
|
||||||
{
|
|
||||||
if (s == m_settings)
|
|
||||||
return;
|
|
||||||
|
|
||||||
m_settings = s;
|
|
||||||
m_gitClient->saveSettings();
|
|
||||||
static_cast<GitVersionControl *>(versionControl())->emitConfigurationChanged();
|
|
||||||
updateRepositoryBrowserAction();
|
|
||||||
}
|
|
||||||
|
|
||||||
GitClient *GitPlugin::gitClient() const
|
GitClient *GitPlugin::gitClient() const
|
||||||
{
|
{
|
||||||
return m_gitClient;
|
return m_gitClient;
|
||||||
|
@@ -85,9 +85,6 @@ public:
|
|||||||
|
|
||||||
GitVersionControl *gitVersionControl() const;
|
GitVersionControl *gitVersionControl() const;
|
||||||
|
|
||||||
const GitSettings &settings() const;
|
|
||||||
void setSettings(const GitSettings &s);
|
|
||||||
|
|
||||||
GitClient *gitClient() const;
|
GitClient *gitClient() const;
|
||||||
Gerrit::Internal::GerritPlugin *gerritPlugin() const;
|
Gerrit::Internal::GerritPlugin *gerritPlugin() const;
|
||||||
|
|
||||||
|
@@ -143,7 +143,7 @@ QString GitVersionControl::vcsTopic(const QString &directory)
|
|||||||
|
|
||||||
QStringList GitVersionControl::additionalToolsPath() const
|
QStringList GitVersionControl::additionalToolsPath() const
|
||||||
{
|
{
|
||||||
QStringList res = m_client->settings()->searchPathList();
|
QStringList res = m_client->settings().searchPathList();
|
||||||
const QString binaryPath = m_client->gitBinDirectory().toString();
|
const QString binaryPath = m_client->gitBinDirectory().toString();
|
||||||
if (!binaryPath.isEmpty() && !res.contains(binaryPath))
|
if (!binaryPath.isEmpty() && !res.contains(binaryPath))
|
||||||
res << binaryPath;
|
res << binaryPath;
|
||||||
@@ -180,10 +180,5 @@ void GitVersionControl::emitRepositoryChanged(const QString &r)
|
|||||||
emit repositoryChanged(r);
|
emit repositoryChanged(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitVersionControl::emitConfigurationChanged()
|
|
||||||
{
|
|
||||||
emit configurationChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // Internal
|
} // Internal
|
||||||
} // Git
|
} // Git
|
||||||
|
@@ -66,7 +66,6 @@ public:
|
|||||||
|
|
||||||
void emitFilesChanged(const QStringList &);
|
void emitFilesChanged(const QStringList &);
|
||||||
void emitRepositoryChanged(const QString &);
|
void emitRepositoryChanged(const QString &);
|
||||||
void emitConfigurationChanged();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GitClient *m_client;
|
GitClient *m_client;
|
||||||
|
@@ -217,7 +217,7 @@ LogChangeDialog::LogChangeDialog(bool isReset, QWidget *parent) :
|
|||||||
m_resetTypeComboBox->addItem(tr("Mixed"), QLatin1String("--mixed"));
|
m_resetTypeComboBox->addItem(tr("Mixed"), QLatin1String("--mixed"));
|
||||||
m_resetTypeComboBox->addItem(tr("Soft"), QLatin1String("--soft"));
|
m_resetTypeComboBox->addItem(tr("Soft"), QLatin1String("--soft"));
|
||||||
GitClient *client = GitPlugin::instance()->gitClient();
|
GitClient *client = GitPlugin::instance()->gitClient();
|
||||||
m_resetTypeComboBox->setCurrentIndex(client->settings()->intValue(
|
m_resetTypeComboBox->setCurrentIndex(client->settings().intValue(
|
||||||
GitSettings::lastResetIndexKey));
|
GitSettings::lastResetIndexKey));
|
||||||
popUpLayout->addWidget(m_resetTypeComboBox);
|
popUpLayout->addWidget(m_resetTypeComboBox);
|
||||||
popUpLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Ignored));
|
popUpLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Ignored));
|
||||||
@@ -247,8 +247,8 @@ bool LogChangeDialog::runDialog(const QString &repository,
|
|||||||
if (QDialog::exec() == QDialog::Accepted) {
|
if (QDialog::exec() == QDialog::Accepted) {
|
||||||
if (m_resetTypeComboBox) {
|
if (m_resetTypeComboBox) {
|
||||||
GitClient *client = GitPlugin::instance()->gitClient();
|
GitClient *client = GitPlugin::instance()->gitClient();
|
||||||
client->settings()->setValue(GitSettings::lastResetIndexKey,
|
client->settings().setValue(GitSettings::lastResetIndexKey,
|
||||||
m_resetTypeComboBox->currentIndex());
|
m_resetTypeComboBox->currentIndex());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -33,6 +33,7 @@
|
|||||||
#include "gitplugin.h"
|
#include "gitplugin.h"
|
||||||
#include "gitclient.h"
|
#include "gitclient.h"
|
||||||
|
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
#include <vcsbase/vcsbaseconstants.h>
|
#include <vcsbase/vcsbaseconstants.h>
|
||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
#include <coreplugin/messagebox.h>
|
#include <coreplugin/messagebox.h>
|
||||||
@@ -41,6 +42,8 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
|
|
||||||
|
using namespace VcsBase;
|
||||||
|
|
||||||
namespace Git {
|
namespace Git {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -66,7 +69,7 @@ SettingsPageWidget::SettingsPageWidget(QWidget *parent) :
|
|||||||
m_ui.repBrowserCommandPathChooser->setPromptDialogTitle(tr("Git Repository Browser Command"));
|
m_ui.repBrowserCommandPathChooser->setPromptDialogTitle(tr("Git Repository Browser Command"));
|
||||||
}
|
}
|
||||||
|
|
||||||
GitSettings SettingsPageWidget::settings() const
|
VcsBaseClientSettings SettingsPageWidget::settings() const
|
||||||
{
|
{
|
||||||
GitSettings rc;
|
GitSettings rc;
|
||||||
rc.setValue(GitSettings::pathKey, m_ui.pathLineEdit->text());
|
rc.setValue(GitSettings::pathKey, m_ui.pathLineEdit->text());
|
||||||
@@ -80,7 +83,7 @@ GitSettings SettingsPageWidget::settings() const
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsPageWidget::setSettings(const GitSettings &s)
|
void SettingsPageWidget::setSettings(const VcsBaseClientSettings &s)
|
||||||
{
|
{
|
||||||
m_ui.pathLineEdit->setText(s.stringValue(GitSettings::pathKey));
|
m_ui.pathLineEdit->setText(s.stringValue(GitSettings::pathKey));
|
||||||
m_ui.logCountSpinBox->setValue(s.intValue(GitSettings::logCountKey));
|
m_ui.logCountSpinBox->setValue(s.intValue(GitSettings::logCountKey));
|
||||||
@@ -104,24 +107,29 @@ QWidget *SettingsPage::widget()
|
|||||||
{
|
{
|
||||||
if (!m_widget) {
|
if (!m_widget) {
|
||||||
m_widget = new SettingsPageWidget;
|
m_widget = new SettingsPageWidget;
|
||||||
m_widget->setSettings(GitPlugin::instance()->settings());
|
m_widget->setSettings(GitPlugin::instance()->gitClient()->settings());
|
||||||
}
|
}
|
||||||
return m_widget;
|
return m_widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsPage::apply()
|
void SettingsPage::apply()
|
||||||
{
|
{
|
||||||
const GitSettings newSettings = m_widget->settings();
|
|
||||||
// Warn if git cannot be found in path if the widget is on top
|
// Warn if git cannot be found in path if the widget is on top
|
||||||
|
const VcsBaseClientSettings newSettings = m_widget->settings();
|
||||||
if (m_widget->isVisible()) {
|
if (m_widget->isVisible()) {
|
||||||
bool gitFoundOk;
|
bool gitFoundOk;
|
||||||
QString errorMessage;
|
QString errorMessage;
|
||||||
newSettings.gitExecutable(&gitFoundOk, &errorMessage);
|
static_cast<const GitSettings &>(newSettings).gitExecutable(&gitFoundOk, &errorMessage);
|
||||||
if (!gitFoundOk)
|
if (!gitFoundOk)
|
||||||
Core::AsynchronousMessageBox::warning(tr("Git Settings"), errorMessage);
|
Core::AsynchronousMessageBox::warning(tr("Git Settings"), errorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
GitPlugin::instance()->setSettings(newSettings);
|
VcsBaseClientSettings &s = GitPlugin::instance()->gitClient()->settings();
|
||||||
|
if (s != newSettings) {
|
||||||
|
s = newSettings;
|
||||||
|
s.writeSettings(Core::ICore::settings());
|
||||||
|
emit settingsChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsPage::finish()
|
void SettingsPage::finish()
|
||||||
|
@@ -42,18 +42,20 @@ QT_BEGIN_NAMESPACE
|
|||||||
class QSettings;
|
class QSettings;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
namespace VcsBase {
|
||||||
|
class VcsBaseClientSettings;
|
||||||
|
} // namespace VcsBase
|
||||||
|
|
||||||
namespace Git {
|
namespace Git {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class GitSettings;
|
|
||||||
|
|
||||||
class SettingsPageWidget : public QWidget {
|
class SettingsPageWidget : public QWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit SettingsPageWidget(QWidget *parent = 0);
|
explicit SettingsPageWidget(QWidget *parent = 0);
|
||||||
|
|
||||||
GitSettings settings() const;
|
VcsBase::VcsBaseClientSettings settings() const;
|
||||||
void setSettings(const GitSettings &);
|
void setSettings(const VcsBase::VcsBaseClientSettings &s);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SettingsPage m_ui;
|
Ui::SettingsPage m_ui;
|
||||||
@@ -70,6 +72,9 @@ public:
|
|||||||
void apply();
|
void apply();
|
||||||
void finish();
|
void finish();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void settingsChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPointer<SettingsPageWidget> m_widget;
|
QPointer<SettingsPageWidget> m_widget;
|
||||||
};
|
};
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#include "clonewizard.h"
|
#include "clonewizard.h"
|
||||||
#include "clonewizardpage.h"
|
#include "clonewizardpage.h"
|
||||||
|
#include "mercurialclient.h"
|
||||||
#include "mercurialplugin.h"
|
#include "mercurialplugin.h"
|
||||||
#include "mercurialsettings.h"
|
#include "mercurialsettings.h"
|
||||||
|
|
||||||
@@ -74,7 +75,7 @@ VcsCommand *CloneWizard::createCommand(Utils::FileName *checkoutDir)
|
|||||||
if (!cwp)
|
if (!cwp)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
const MercurialSettings &settings = MercurialPlugin::settings();
|
const VcsBaseClientSettings &settings = MercurialPlugin::client()->settings();
|
||||||
|
|
||||||
QString path = cwp->path();
|
QString path = cwp->path();
|
||||||
QString directory = cwp->directory();
|
QString directory = cwp->directory();
|
||||||
|
@@ -58,25 +58,20 @@ class MercurialDiffParameterWidget : public VcsBaseEditorParameterWidget
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
MercurialDiffParameterWidget(MercurialSettings *settings, QWidget *parent = 0) :
|
MercurialDiffParameterWidget(VcsBaseClientSettings &settings, QWidget *parent = 0) :
|
||||||
VcsBaseEditorParameterWidget(parent)
|
VcsBaseEditorParameterWidget(parent)
|
||||||
{
|
{
|
||||||
mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace")),
|
mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace")),
|
||||||
settings->boolPointer(MercurialSettings::diffIgnoreWhiteSpaceKey));
|
settings.boolPointer(MercurialSettings::diffIgnoreWhiteSpaceKey));
|
||||||
mapSetting(addToggleButton(QLatin1String("-B"), tr("Ignore Blank Lines")),
|
mapSetting(addToggleButton(QLatin1String("-B"), tr("Ignore Blank Lines")),
|
||||||
settings->boolPointer(MercurialSettings::diffIgnoreBlankLinesKey));
|
settings.boolPointer(MercurialSettings::diffIgnoreBlankLinesKey));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
MercurialClient::MercurialClient(MercurialSettings *settings) :
|
MercurialClient::MercurialClient() :
|
||||||
VcsBaseClient(settings)
|
VcsBaseClient(new MercurialSettings)
|
||||||
{
|
{
|
||||||
setDiffParameterWidgetCreator([=] { return new MercurialDiffParameterWidget(settings); });
|
setDiffParameterWidgetCreator([this] { return new MercurialDiffParameterWidget(settings()); });
|
||||||
}
|
|
||||||
|
|
||||||
MercurialSettings *MercurialClient::settings() const
|
|
||||||
{
|
|
||||||
return dynamic_cast<MercurialSettings *>(VcsBaseClient::settings());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MercurialClient::manifestSync(const QString &repository, const QString &relativeFilename)
|
bool MercurialClient::manifestSync(const QString &repository, const QString &relativeFilename)
|
||||||
|
@@ -42,9 +42,7 @@ class MercurialClient : public VcsBase::VcsBaseClient
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
MercurialClient(MercurialSettings *settings);
|
MercurialClient();
|
||||||
|
|
||||||
MercurialSettings *settings() const;
|
|
||||||
|
|
||||||
bool synchronousClone(const QString &workingDir,
|
bool synchronousClone(const QString &workingDir,
|
||||||
const QString &srcLocation,
|
const QString &srcLocation,
|
||||||
|
@@ -98,7 +98,7 @@ bool MercurialControl::managesFile(const QString &workingDirectory, const QStrin
|
|||||||
|
|
||||||
bool MercurialControl::isConfigured() const
|
bool MercurialControl::isConfigured() const
|
||||||
{
|
{
|
||||||
const Utils::FileName binary = mercurialClient->settings()->binaryPath();
|
const Utils::FileName binary = mercurialClient->vcsBinary();
|
||||||
if (binary.isEmpty())
|
if (binary.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
QFileInfo fi = binary.toFileInfo();
|
QFileInfo fi = binary.toFileInfo();
|
||||||
@@ -186,10 +186,5 @@ void MercurialControl::changed(const QVariant &v)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MercurialControl::emitConfigurationChanged()
|
|
||||||
{
|
|
||||||
emit configurationChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Mercurial
|
} // namespace Mercurial
|
||||||
|
@@ -70,7 +70,6 @@ public slots:
|
|||||||
// files changed signals according to the variant's type:
|
// files changed signals according to the variant's type:
|
||||||
// String -> repository, StringList -> files
|
// String -> repository, StringList -> files
|
||||||
void changed(const QVariant&);
|
void changed(const QVariant&);
|
||||||
void emitConfigurationChanged();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MercurialClient *mercurialClient;
|
MercurialClient *mercurialClient;
|
||||||
|
@@ -136,12 +136,11 @@ bool MercurialPlugin::initialize(const QStringList & /* arguments */, QString *
|
|||||||
{
|
{
|
||||||
Core::Context context(Constants::MERCURIAL_CONTEXT);
|
Core::Context context(Constants::MERCURIAL_CONTEXT);
|
||||||
|
|
||||||
m_client = new MercurialClient(&mercurialSettings);
|
m_client = new MercurialClient;
|
||||||
initializeVcs(new MercurialControl(m_client), context);
|
initializeVcs(new MercurialControl(m_client), context);
|
||||||
|
|
||||||
optionsPage = new OptionsPage();
|
optionsPage = new OptionsPage();
|
||||||
addAutoReleasedObject(optionsPage);
|
addAutoReleasedObject(optionsPage);
|
||||||
mercurialSettings.readSettings(core->settings());
|
|
||||||
|
|
||||||
connect(m_client, SIGNAL(changed(QVariant)), versionControl(), SLOT(changed(QVariant)));
|
connect(m_client, SIGNAL(changed(QVariant)), versionControl(), SLOT(changed(QVariant)));
|
||||||
connect(m_client, SIGNAL(needUpdate()), this, SLOT(update()));
|
connect(m_client, SIGNAL(needUpdate()), this, SLOT(update()));
|
||||||
@@ -176,19 +175,6 @@ bool MercurialPlugin::initialize(const QStringList & /* arguments */, QString *
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const MercurialSettings &MercurialPlugin::settings()
|
|
||||||
{
|
|
||||||
return m_instance->mercurialSettings;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MercurialPlugin::setSettings(const MercurialSettings &settings)
|
|
||||||
{
|
|
||||||
if (settings != m_instance->mercurialSettings) {
|
|
||||||
m_instance->mercurialSettings = settings;
|
|
||||||
static_cast<MercurialControl *>(m_instance->versionControl())->emitConfigurationChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MercurialPlugin::createMenu(const Core::Context &context)
|
void MercurialPlugin::createMenu(const Core::Context &context)
|
||||||
{
|
{
|
||||||
// Create menu item for Mercurial
|
// Create menu item for Mercurial
|
||||||
|
@@ -75,9 +75,6 @@ public:
|
|||||||
static MercurialPlugin *instance() { return m_instance; }
|
static MercurialPlugin *instance() { return m_instance; }
|
||||||
static MercurialClient *client() { return m_instance->m_client; }
|
static MercurialClient *client() { return m_instance->m_client; }
|
||||||
|
|
||||||
static const MercurialSettings &settings();
|
|
||||||
static void setSettings(const MercurialSettings &settings);
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
// File menu action slots
|
// File menu action slots
|
||||||
void addCurrentFile();
|
void addCurrentFile();
|
||||||
|
@@ -29,6 +29,8 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "optionspage.h"
|
#include "optionspage.h"
|
||||||
|
|
||||||
|
#include "mercurialclient.h"
|
||||||
#include "mercurialsettings.h"
|
#include "mercurialsettings.h"
|
||||||
#include "mercurialplugin.h"
|
#include "mercurialplugin.h"
|
||||||
|
|
||||||
@@ -38,6 +40,8 @@
|
|||||||
|
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
|
|
||||||
|
using namespace VcsBase;
|
||||||
|
|
||||||
namespace Mercurial {
|
namespace Mercurial {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -50,9 +54,9 @@ OptionsPageWidget::OptionsPageWidget(QWidget *parent) :
|
|||||||
m_ui.commandChooser->setPromptDialogTitle(tr("Mercurial Command"));
|
m_ui.commandChooser->setPromptDialogTitle(tr("Mercurial Command"));
|
||||||
}
|
}
|
||||||
|
|
||||||
MercurialSettings OptionsPageWidget::settings() const
|
VcsBaseClientSettings OptionsPageWidget::settings() const
|
||||||
{
|
{
|
||||||
MercurialSettings s = MercurialPlugin::settings();
|
MercurialSettings s;
|
||||||
s.setValue(MercurialSettings::binaryPathKey, m_ui.commandChooser->rawPath());
|
s.setValue(MercurialSettings::binaryPathKey, m_ui.commandChooser->rawPath());
|
||||||
s.setValue(MercurialSettings::userNameKey, m_ui.defaultUsernameLineEdit->text().trimmed());
|
s.setValue(MercurialSettings::userNameKey, m_ui.defaultUsernameLineEdit->text().trimmed());
|
||||||
s.setValue(MercurialSettings::userEmailKey, m_ui.defaultEmailLineEdit->text().trimmed());
|
s.setValue(MercurialSettings::userEmailKey, m_ui.defaultEmailLineEdit->text().trimmed());
|
||||||
@@ -61,7 +65,7 @@ MercurialSettings OptionsPageWidget::settings() const
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsPageWidget::setSettings(const MercurialSettings &s)
|
void OptionsPageWidget::setSettings(const VcsBaseClientSettings &s)
|
||||||
{
|
{
|
||||||
m_ui.commandChooser->setPath(s.stringValue(MercurialSettings::binaryPathKey));
|
m_ui.commandChooser->setPath(s.stringValue(MercurialSettings::binaryPathKey));
|
||||||
m_ui.defaultUsernameLineEdit->setText(s.stringValue(MercurialSettings::userNameKey));
|
m_ui.defaultUsernameLineEdit->setText(s.stringValue(MercurialSettings::userNameKey));
|
||||||
@@ -80,7 +84,7 @@ QWidget *OptionsPage::widget()
|
|||||||
{
|
{
|
||||||
if (!optionsPageWidget)
|
if (!optionsPageWidget)
|
||||||
optionsPageWidget = new OptionsPageWidget;
|
optionsPageWidget = new OptionsPageWidget;
|
||||||
optionsPageWidget->setSettings(MercurialPlugin::settings());
|
optionsPageWidget->setSettings(MercurialPlugin::client()->settings());
|
||||||
return optionsPageWidget;
|
return optionsPageWidget;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,13 +92,15 @@ void OptionsPage::apply()
|
|||||||
{
|
{
|
||||||
if (!optionsPageWidget)
|
if (!optionsPageWidget)
|
||||||
return;
|
return;
|
||||||
const MercurialSettings newSettings = optionsPageWidget->settings();
|
|
||||||
if (newSettings != MercurialPlugin::settings()) {
|
const VcsBaseClientSettings newSettings = optionsPageWidget->settings();
|
||||||
//assume success and emit signal that settings are changed;
|
VcsBaseClientSettings &s = MercurialPlugin::instance()->client()->settings();
|
||||||
MercurialPlugin::setSettings(newSettings);
|
if (s != newSettings) {
|
||||||
newSettings.writeSettings(Core::ICore::settings());
|
s = newSettings;
|
||||||
|
s.writeSettings(Core::ICore::settings());
|
||||||
emit settingsChanged();
|
emit settingsChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsPage::finish()
|
void OptionsPage::finish()
|
||||||
|
@@ -38,11 +38,13 @@
|
|||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
|
|
||||||
|
namespace VcsBase {
|
||||||
|
class VcsBaseClientSettings;
|
||||||
|
} // namespace VcsBase
|
||||||
|
|
||||||
namespace Mercurial {
|
namespace Mercurial {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class MercurialSettings;
|
|
||||||
|
|
||||||
class OptionsPageWidget : public QWidget
|
class OptionsPageWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -50,8 +52,8 @@ class OptionsPageWidget : public QWidget
|
|||||||
public:
|
public:
|
||||||
explicit OptionsPageWidget(QWidget *parent = 0);
|
explicit OptionsPageWidget(QWidget *parent = 0);
|
||||||
|
|
||||||
MercurialSettings settings() const;
|
VcsBase::VcsBaseClientSettings settings() const;
|
||||||
void setSettings(const MercurialSettings &s);
|
void setSettings(const VcsBase::VcsBaseClientSettings &s);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::OptionsPage m_ui;
|
Ui::OptionsPage m_ui;
|
||||||
|
@@ -74,8 +74,9 @@ VcsCommand *CheckoutWizard::createCommand(FileName *checkoutDir)
|
|||||||
}
|
}
|
||||||
QTC_ASSERT(cwp, return 0);
|
QTC_ASSERT(cwp, return 0);
|
||||||
|
|
||||||
const SubversionSettings settings = SubversionPlugin::instance()->settings();
|
SubversionClient *client = SubversionPlugin::instance()->client();
|
||||||
const FileName binary = settings.binaryPath();
|
const VcsBaseClientSettings &settings = client->settings();
|
||||||
|
const FileName binary = client->vcsBinary();
|
||||||
const QString directory = cwp->directory();
|
const QString directory = cwp->directory();
|
||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("checkout");
|
args << QLatin1String("checkout");
|
||||||
|
@@ -29,8 +29,10 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "settingspage.h"
|
#include "settingspage.h"
|
||||||
#include "subversionsettings.h"
|
|
||||||
|
#include "subversionclient.h"
|
||||||
#include "subversionplugin.h"
|
#include "subversionplugin.h"
|
||||||
|
#include "subversionsettings.h"
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <extensionsystem/pluginmanager.h>
|
#include <extensionsystem/pluginmanager.h>
|
||||||
@@ -43,6 +45,7 @@
|
|||||||
|
|
||||||
using namespace Subversion::Internal;
|
using namespace Subversion::Internal;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
using namespace VcsBase;
|
||||||
|
|
||||||
SettingsPageWidget::SettingsPageWidget(QWidget *parent) :
|
SettingsPageWidget::SettingsPageWidget(QWidget *parent) :
|
||||||
QWidget(parent)
|
QWidget(parent)
|
||||||
@@ -53,7 +56,7 @@ SettingsPageWidget::SettingsPageWidget(QWidget *parent) :
|
|||||||
m_ui.pathChooser->setPromptDialogTitle(tr("Subversion Command"));
|
m_ui.pathChooser->setPromptDialogTitle(tr("Subversion Command"));
|
||||||
}
|
}
|
||||||
|
|
||||||
SubversionSettings SettingsPageWidget::settings() const
|
VcsBase::VcsBaseClientSettings SettingsPageWidget::settings() const
|
||||||
{
|
{
|
||||||
SubversionSettings rc;
|
SubversionSettings rc;
|
||||||
rc.setValue(SubversionSettings::binaryPathKey, m_ui.pathChooser->rawPath());
|
rc.setValue(SubversionSettings::binaryPathKey, m_ui.pathChooser->rawPath());
|
||||||
@@ -70,7 +73,7 @@ SubversionSettings SettingsPageWidget::settings() const
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsPageWidget::setSettings(const SubversionSettings &s)
|
void SettingsPageWidget::setSettings(const VcsBaseClientSettings &s)
|
||||||
{
|
{
|
||||||
m_ui.pathChooser->setFileName(s.binaryPath());
|
m_ui.pathChooser->setFileName(s.binaryPath());
|
||||||
m_ui.usernameLineEdit->setText(s.stringValue(SubversionSettings::userKey));
|
m_ui.usernameLineEdit->setText(s.stringValue(SubversionSettings::userKey));
|
||||||
@@ -94,14 +97,20 @@ QWidget *SettingsPage::widget()
|
|||||||
{
|
{
|
||||||
if (!m_widget) {
|
if (!m_widget) {
|
||||||
m_widget = new SettingsPageWidget;
|
m_widget = new SettingsPageWidget;
|
||||||
m_widget->setSettings(SubversionPlugin::instance()->settings());
|
m_widget->setSettings(SubversionPlugin::instance()->client()->settings());
|
||||||
}
|
}
|
||||||
return m_widget;
|
return m_widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsPage::apply()
|
void SettingsPage::apply()
|
||||||
{
|
{
|
||||||
SubversionPlugin::instance()->setSettings(m_widget->settings());
|
const VcsBaseClientSettings newSettings = m_widget->settings();
|
||||||
|
VcsBaseClientSettings &s = SubversionPlugin::instance()->client()->settings();
|
||||||
|
if (s != newSettings) {
|
||||||
|
s = newSettings;
|
||||||
|
s.writeSettings(Core::ICore::settings());
|
||||||
|
emit settingsChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsPage::finish()
|
void SettingsPage::finish()
|
||||||
|
@@ -43,11 +43,13 @@ QT_BEGIN_NAMESPACE
|
|||||||
class QSettings;
|
class QSettings;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
namespace VcsBase {
|
||||||
|
class VcsBaseClientSettings;
|
||||||
|
} // namespace VcsBa
|
||||||
|
|
||||||
namespace Subversion {
|
namespace Subversion {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class SubversionSettings;
|
|
||||||
|
|
||||||
class SettingsPageWidget : public QWidget
|
class SettingsPageWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -55,8 +57,8 @@ class SettingsPageWidget : public QWidget
|
|||||||
public:
|
public:
|
||||||
explicit SettingsPageWidget(QWidget *parent = 0);
|
explicit SettingsPageWidget(QWidget *parent = 0);
|
||||||
|
|
||||||
SubversionSettings settings() const;
|
VcsBase::VcsBaseClientSettings settings() const;
|
||||||
void setSettings(const SubversionSettings &);
|
void setSettings(const VcsBase::VcsBaseClientSettings &s);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SettingsPage m_ui;
|
Ui::SettingsPage m_ui;
|
||||||
@@ -74,6 +76,9 @@ public:
|
|||||||
void apply();
|
void apply();
|
||||||
void finish();
|
void finish();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void settingsChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPointer<SettingsPageWidget> m_widget;
|
QPointer<SettingsPageWidget> m_widget;
|
||||||
};
|
};
|
||||||
|
@@ -62,24 +62,18 @@ class SubversionLogParameterWidget : public VcsBaseEditorParameterWidget
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
SubversionLogParameterWidget(SubversionSettings *settings, QWidget *parent = 0) :
|
SubversionLogParameterWidget(VcsBaseClientSettings &settings, QWidget *parent = 0) :
|
||||||
VcsBaseEditorParameterWidget(parent)
|
VcsBaseEditorParameterWidget(parent)
|
||||||
{
|
{
|
||||||
mapSetting(addToggleButton(QLatin1String("--verbose"), tr("Verbose"),
|
mapSetting(addToggleButton(QLatin1String("--verbose"), tr("Verbose"),
|
||||||
tr("Show files changed in each revision")),
|
tr("Show files changed in each revision")),
|
||||||
settings->boolPointer(SubversionSettings::logVerboseKey));
|
settings.boolPointer(SubversionSettings::logVerboseKey));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
SubversionClient::SubversionClient(SubversionSettings *settings) :
|
SubversionClient::SubversionClient() : VcsBaseClient(new SubversionSettings)
|
||||||
VcsBaseClient(settings)
|
|
||||||
{
|
{
|
||||||
setLogParameterWidgetCreator([=] { return new SubversionLogParameterWidget(settings); });
|
setLogParameterWidgetCreator([this] { return new SubversionLogParameterWidget(settings()); });
|
||||||
}
|
|
||||||
|
|
||||||
SubversionSettings *SubversionClient::settings() const
|
|
||||||
{
|
|
||||||
return dynamic_cast<SubversionSettings *>(VcsBaseClient::settings());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VcsCommand *SubversionClient::createCommitCmd(const QString &repositoryRoot,
|
VcsCommand *SubversionClient::createCommitCmd(const QString &repositoryRoot,
|
||||||
@@ -89,7 +83,7 @@ VcsCommand *SubversionClient::createCommitCmd(const QString &repositoryRoot,
|
|||||||
{
|
{
|
||||||
const QStringList svnExtraOptions =
|
const QStringList svnExtraOptions =
|
||||||
QStringList(extraOptions)
|
QStringList(extraOptions)
|
||||||
<< SubversionClient::addAuthenticationOptions(*settings())
|
<< SubversionClient::addAuthenticationOptions(settings())
|
||||||
<< QLatin1String(Constants::NON_INTERACTIVE_OPTION)
|
<< QLatin1String(Constants::NON_INTERACTIVE_OPTION)
|
||||||
<< QLatin1String("--encoding") << QLatin1String("utf8")
|
<< QLatin1String("--encoding") << QLatin1String("utf8")
|
||||||
<< QLatin1String("--file") << commitMessageFile;
|
<< QLatin1String("--file") << commitMessageFile;
|
||||||
@@ -124,9 +118,9 @@ Id SubversionClient::vcsEditorKind(VcsCommandTag cmd) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add authorization options to the command line arguments.
|
// Add authorization options to the command line arguments.
|
||||||
QStringList SubversionClient::addAuthenticationOptions(const SubversionSettings &settings)
|
QStringList SubversionClient::addAuthenticationOptions(const VcsBaseClientSettings &settings)
|
||||||
{
|
{
|
||||||
if (!settings.hasAuthentication())
|
if (!static_cast<const SubversionSettings &>(settings).hasAuthentication())
|
||||||
return QStringList();
|
return QStringList();
|
||||||
|
|
||||||
const QString userName = settings.stringValue(SubversionSettings::userKey);
|
const QString userName = settings.stringValue(SubversionSettings::userKey);
|
||||||
@@ -223,7 +217,7 @@ void DiffController::setChangeNumber(int changeNumber)
|
|||||||
QString DiffController::getDescription() const
|
QString DiffController::getDescription() const
|
||||||
{
|
{
|
||||||
QStringList args(QLatin1String("log"));
|
QStringList args(QLatin1String("log"));
|
||||||
args << SubversionClient::addAuthenticationOptions(*m_client->settings());
|
args << SubversionClient::addAuthenticationOptions(m_client->settings());
|
||||||
args << QLatin1String("-r");
|
args << QLatin1String("-r");
|
||||||
args << QString::number(m_changeNumber);
|
args << QString::number(m_changeNumber);
|
||||||
const SubversionResponse logResponse =
|
const SubversionResponse logResponse =
|
||||||
@@ -247,7 +241,7 @@ void DiffController::postCollectTextualDiffOutput()
|
|||||||
|
|
||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("diff");
|
args << QLatin1String("diff");
|
||||||
args << m_client->addAuthenticationOptions(*m_client->settings());
|
args << m_client->addAuthenticationOptions(m_client->settings());
|
||||||
args << QLatin1String("--internal-diff");
|
args << QLatin1String("--internal-diff");
|
||||||
if (ignoreWhitespace())
|
if (ignoreWhitespace())
|
||||||
args << QLatin1String("-x") << QLatin1String("-uw");
|
args << QLatin1String("-x") << QLatin1String("-uw");
|
||||||
@@ -312,10 +306,10 @@ void SubversionClient::log(const QString &workingDir,
|
|||||||
const QStringList &extraOptions,
|
const QStringList &extraOptions,
|
||||||
bool enableAnnotationContextMenu)
|
bool enableAnnotationContextMenu)
|
||||||
{
|
{
|
||||||
const auto logCount = settings()->intValue(SubversionSettings::logCountKey);
|
const auto logCount = settings().intValue(SubversionSettings::logCountKey);
|
||||||
QStringList svnExtraOptions =
|
QStringList svnExtraOptions =
|
||||||
QStringList(extraOptions)
|
QStringList(extraOptions)
|
||||||
<< SubversionClient::addAuthenticationOptions(*settings());
|
<< SubversionClient::addAuthenticationOptions(settings());
|
||||||
if (logCount > 0)
|
if (logCount > 0)
|
||||||
svnExtraOptions << QLatin1String("-l") << QString::number(logCount);
|
svnExtraOptions << QLatin1String("-l") << QString::number(logCount);
|
||||||
|
|
||||||
|
@@ -48,9 +48,7 @@ class SubversionClient : public VcsBase::VcsBaseClient
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SubversionClient(SubversionSettings *settings);
|
SubversionClient();
|
||||||
|
|
||||||
SubversionSettings *settings() const;
|
|
||||||
|
|
||||||
VcsBase::VcsCommand *createCommitCmd(const QString &repositoryRoot,
|
VcsBase::VcsCommand *createCommitCmd(const QString &repositoryRoot,
|
||||||
const QStringList &files,
|
const QStringList &files,
|
||||||
@@ -75,7 +73,7 @@ public:
|
|||||||
StatusItem parseStatusLine(const QString &line) const;
|
StatusItem parseStatusLine(const QString &line) const;
|
||||||
|
|
||||||
// Add authorization options to the command line arguments.
|
// Add authorization options to the command line arguments.
|
||||||
static QStringList addAuthenticationOptions(const SubversionSettings &settings);
|
static QStringList addAuthenticationOptions(const VcsBase::VcsBaseClientSettings &settings);
|
||||||
|
|
||||||
QString synchronousTopic(const QString &repository);
|
QString synchronousTopic(const QString &repository);
|
||||||
|
|
||||||
|
@@ -29,6 +29,8 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "subversioncontrol.h"
|
#include "subversioncontrol.h"
|
||||||
|
|
||||||
|
#include "subversionclient.h"
|
||||||
#include "subversionplugin.h"
|
#include "subversionplugin.h"
|
||||||
#include "subversionsettings.h"
|
#include "subversionsettings.h"
|
||||||
|
|
||||||
@@ -80,7 +82,7 @@ Core::Id SubversionControl::id() const
|
|||||||
|
|
||||||
bool SubversionControl::isConfigured() const
|
bool SubversionControl::isConfigured() const
|
||||||
{
|
{
|
||||||
const Utils::FileName binary = m_plugin->settings().binaryPath();
|
const Utils::FileName binary = m_plugin->client()->vcsBinary();
|
||||||
if (binary.isEmpty())
|
if (binary.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
QFileInfo fi = binary.toFileInfo();
|
QFileInfo fi = binary.toFileInfo();
|
||||||
@@ -161,10 +163,5 @@ void SubversionControl::emitFilesChanged(const QStringList &l)
|
|||||||
emit filesChanged(l);
|
emit filesChanged(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SubversionControl::emitConfigurationChanged()
|
|
||||||
{
|
|
||||||
emit configurationChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Subversion
|
} // namespace Subversion
|
||||||
|
@@ -62,7 +62,6 @@ public:
|
|||||||
|
|
||||||
void emitRepositoryChanged(const QString &);
|
void emitRepositoryChanged(const QString &);
|
||||||
void emitFilesChanged(const QStringList &);
|
void emitFilesChanged(const QStringList &);
|
||||||
void emitConfigurationChanged();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SubversionPlugin *m_plugin;
|
SubversionPlugin *m_plugin;
|
||||||
|
@@ -247,8 +247,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
|
|||||||
|
|
||||||
Utils::MimeDatabase::addMimeTypes(QLatin1String(":/trolltech.subversion/Subversion.mimetypes.xml"));
|
Utils::MimeDatabase::addMimeTypes(QLatin1String(":/trolltech.subversion/Subversion.mimetypes.xml"));
|
||||||
|
|
||||||
m_settings.readSettings(ICore::settings());
|
m_client = new SubversionClient;
|
||||||
m_client = new SubversionClient(&m_settings);
|
|
||||||
|
|
||||||
addAutoReleasedObject(new SettingsPage);
|
addAutoReleasedObject(new SettingsPage);
|
||||||
|
|
||||||
@@ -451,6 +450,12 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SubversionClient *SubversionPlugin::client() const
|
||||||
|
{
|
||||||
|
QTC_CHECK(m_client);
|
||||||
|
return m_client;
|
||||||
|
}
|
||||||
|
|
||||||
bool SubversionPlugin::submitEditorAboutToClose()
|
bool SubversionPlugin::submitEditorAboutToClose()
|
||||||
{
|
{
|
||||||
if (!isCommitEditorOpen())
|
if (!isCommitEditorOpen())
|
||||||
@@ -470,7 +475,7 @@ bool SubversionPlugin::submitEditorAboutToClose()
|
|||||||
|
|
||||||
// Prompt user. Force a prompt unless submit was actually invoked (that
|
// Prompt user. Force a prompt unless submit was actually invoked (that
|
||||||
// is, the editor was closed or shutdown).
|
// is, the editor was closed or shutdown).
|
||||||
SubversionSettings newSettings = m_settings;
|
VcsBaseClientSettings &newSettings = client()->settings();
|
||||||
const VcsBaseSubmitEditor::PromptSubmitResult answer =
|
const VcsBaseSubmitEditor::PromptSubmitResult answer =
|
||||||
editor->promptSubmit(tr("Closing Subversion Editor"),
|
editor->promptSubmit(tr("Closing Subversion Editor"),
|
||||||
tr("Do you want to commit the change?"),
|
tr("Do you want to commit the change?"),
|
||||||
@@ -487,7 +492,6 @@ bool SubversionPlugin::submitEditorAboutToClose()
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
setSettings(newSettings); // in case someone turned prompting off
|
|
||||||
const QStringList fileList = editor->checkedFiles();
|
const QStringList fileList = editor->checkedFiles();
|
||||||
bool closeEditor = true;
|
bool closeEditor = true;
|
||||||
if (!fileList.empty()) {
|
if (!fileList.empty()) {
|
||||||
@@ -578,7 +582,7 @@ void SubversionPlugin::revertAll()
|
|||||||
// NoteL: Svn "revert ." doesn not work.
|
// NoteL: Svn "revert ." doesn not work.
|
||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("revert");
|
args << QLatin1String("revert");
|
||||||
args << SubversionClient::addAuthenticationOptions(settings());
|
args << SubversionClient::addAuthenticationOptions(client()->settings());
|
||||||
args << QLatin1String("--recursive") << state.topLevel();
|
args << QLatin1String("--recursive") << state.topLevel();
|
||||||
const SubversionResponse revertResponse
|
const SubversionResponse revertResponse
|
||||||
= runSvn(state.topLevel(), args, m_client->vcsTimeout() * 1000,
|
= runSvn(state.topLevel(), args, m_client->vcsTimeout() * 1000,
|
||||||
@@ -596,7 +600,7 @@ void SubversionPlugin::revertCurrentFile()
|
|||||||
QTC_ASSERT(state.hasFile(), return);
|
QTC_ASSERT(state.hasFile(), return);
|
||||||
|
|
||||||
QStringList args(QLatin1String("diff"));
|
QStringList args(QLatin1String("diff"));
|
||||||
args << SubversionClient::addAuthenticationOptions(settings());
|
args << SubversionClient::addAuthenticationOptions(client()->settings());
|
||||||
args.push_back(state.relativeCurrentFile());
|
args.push_back(state.relativeCurrentFile());
|
||||||
|
|
||||||
const SubversionResponse diffResponse
|
const SubversionResponse diffResponse
|
||||||
@@ -617,7 +621,7 @@ void SubversionPlugin::revertCurrentFile()
|
|||||||
// revert
|
// revert
|
||||||
args.clear();
|
args.clear();
|
||||||
args << QLatin1String("revert");
|
args << QLatin1String("revert");
|
||||||
args << SubversionClient::addAuthenticationOptions(settings());
|
args << SubversionClient::addAuthenticationOptions(client()->settings());
|
||||||
args << state.relativeCurrentFile();
|
args << state.relativeCurrentFile();
|
||||||
|
|
||||||
const SubversionResponse revertResponse
|
const SubversionResponse revertResponse
|
||||||
@@ -680,7 +684,7 @@ void SubversionPlugin::startCommit(const QString &workingDir, const QStringList
|
|||||||
}
|
}
|
||||||
|
|
||||||
QStringList args(QLatin1String("status"));
|
QStringList args(QLatin1String("status"));
|
||||||
args << SubversionClient::addAuthenticationOptions(settings());
|
args << SubversionClient::addAuthenticationOptions(client()->settings());
|
||||||
args += files;
|
args += files;
|
||||||
|
|
||||||
const SubversionResponse response
|
const SubversionResponse response
|
||||||
@@ -760,7 +764,7 @@ void SubversionPlugin::svnStatus(const QString &workingDir, const QString &relat
|
|||||||
const VcsBasePluginState state = currentState();
|
const VcsBasePluginState state = currentState();
|
||||||
QTC_ASSERT(state.hasTopLevel(), return);
|
QTC_ASSERT(state.hasTopLevel(), return);
|
||||||
QStringList args(QLatin1String("status"));
|
QStringList args(QLatin1String("status"));
|
||||||
args << SubversionClient::addAuthenticationOptions(settings());
|
args << SubversionClient::addAuthenticationOptions(client()->settings());
|
||||||
if (!relativePath.isEmpty())
|
if (!relativePath.isEmpty())
|
||||||
args.append(relativePath);
|
args.append(relativePath);
|
||||||
VcsOutputWindow::setRepository(workingDir);
|
VcsOutputWindow::setRepository(workingDir);
|
||||||
@@ -786,7 +790,7 @@ void SubversionPlugin::updateProject()
|
|||||||
void SubversionPlugin::svnUpdate(const QString &workingDir, const QString &relativePath)
|
void SubversionPlugin::svnUpdate(const QString &workingDir, const QString &relativePath)
|
||||||
{
|
{
|
||||||
QStringList args(QLatin1String("update"));
|
QStringList args(QLatin1String("update"));
|
||||||
args << SubversionClient::addAuthenticationOptions(settings());
|
args << SubversionClient::addAuthenticationOptions(client()->settings());
|
||||||
args.push_back(QLatin1String(Constants::NON_INTERACTIVE_OPTION));
|
args.push_back(QLatin1String(Constants::NON_INTERACTIVE_OPTION));
|
||||||
if (!relativePath.isEmpty())
|
if (!relativePath.isEmpty())
|
||||||
args.append(relativePath);
|
args.append(relativePath);
|
||||||
@@ -820,8 +824,9 @@ void SubversionPlugin::vcsAnnotate(const QString &workingDir, const QString &fil
|
|||||||
QTextCodec *codec = VcsBaseEditor::getCodec(source);
|
QTextCodec *codec = VcsBaseEditor::getCodec(source);
|
||||||
|
|
||||||
QStringList args(QLatin1String("annotate"));
|
QStringList args(QLatin1String("annotate"));
|
||||||
args << SubversionClient::addAuthenticationOptions(settings());
|
const VcsBaseClientSettings &s = client()->settings();
|
||||||
if (m_settings.boolValue(SubversionSettings::spaceIgnorantAnnotationKey))
|
args << SubversionClient::addAuthenticationOptions(s);
|
||||||
|
if (s.boolValue(SubversionSettings::spaceIgnorantAnnotationKey))
|
||||||
args << QLatin1String("-x") << QLatin1String("-uw");
|
args << QLatin1String("-x") << QLatin1String("-uw");
|
||||||
if (!revision.isEmpty())
|
if (!revision.isEmpty())
|
||||||
args << QLatin1String("-r") << revision;
|
args << QLatin1String("-r") << revision;
|
||||||
@@ -913,7 +918,7 @@ SubversionResponse SubversionPlugin::runSvn(const QString &workingDir,
|
|||||||
const QStringList &arguments, int timeOut,
|
const QStringList &arguments, int timeOut,
|
||||||
unsigned flags, QTextCodec *outputCodec) const
|
unsigned flags, QTextCodec *outputCodec) const
|
||||||
{
|
{
|
||||||
const FileName executable = m_settings.binaryPath();
|
const FileName executable = client()->vcsBinary();
|
||||||
SubversionResponse response;
|
SubversionResponse response;
|
||||||
if (executable.isEmpty()) {
|
if (executable.isEmpty()) {
|
||||||
response.error = true;
|
response.error = true;
|
||||||
@@ -960,20 +965,6 @@ IEditor *SubversionPlugin::showOutputInEditor(const QString &title, const QStrin
|
|||||||
return editor;
|
return editor;
|
||||||
}
|
}
|
||||||
|
|
||||||
SubversionSettings SubversionPlugin::settings() const
|
|
||||||
{
|
|
||||||
return m_settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SubversionPlugin::setSettings(const SubversionSettings &s)
|
|
||||||
{
|
|
||||||
if (s != m_settings) {
|
|
||||||
m_settings = s;
|
|
||||||
m_settings.writeSettings(ICore::settings());
|
|
||||||
subVersionControl()->emitConfigurationChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SubversionPlugin *SubversionPlugin::instance()
|
SubversionPlugin *SubversionPlugin::instance()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_subversionPluginInstance, return m_subversionPluginInstance);
|
QTC_ASSERT(m_subversionPluginInstance, return m_subversionPluginInstance);
|
||||||
@@ -1004,7 +995,7 @@ bool SubversionPlugin::vcsAdd(const QString &workingDir, const QString &rawFileN
|
|||||||
const QString file = QDir::toNativeSeparators(rawFileName);
|
const QString file = QDir::toNativeSeparators(rawFileName);
|
||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("add")
|
args << QLatin1String("add")
|
||||||
<< SubversionClient::addAuthenticationOptions(settings())
|
<< SubversionClient::addAuthenticationOptions(client()->settings())
|
||||||
<< QLatin1String("--parents") << file;
|
<< QLatin1String("--parents") << file;
|
||||||
const SubversionResponse response
|
const SubversionResponse response
|
||||||
= runSvn(workingDir, args, m_client->vcsTimeout() * 1000,
|
= runSvn(workingDir, args, m_client->vcsTimeout() * 1000,
|
||||||
@@ -1018,7 +1009,8 @@ bool SubversionPlugin::vcsDelete(const QString &workingDir, const QString &rawFi
|
|||||||
|
|
||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("delete");
|
args << QLatin1String("delete");
|
||||||
args << SubversionClient::addAuthenticationOptions(settings()) << QLatin1String("--force") << file;
|
args << SubversionClient::addAuthenticationOptions(client()->settings())
|
||||||
|
<< QLatin1String("--force") << file;
|
||||||
|
|
||||||
const SubversionResponse response
|
const SubversionResponse response
|
||||||
= runSvn(workingDir, args, m_client->vcsTimeout() * 1000,
|
= runSvn(workingDir, args, m_client->vcsTimeout() * 1000,
|
||||||
@@ -1029,7 +1021,7 @@ bool SubversionPlugin::vcsDelete(const QString &workingDir, const QString &rawFi
|
|||||||
bool SubversionPlugin::vcsMove(const QString &workingDir, const QString &from, const QString &to)
|
bool SubversionPlugin::vcsMove(const QString &workingDir, const QString &from, const QString &to)
|
||||||
{
|
{
|
||||||
QStringList args(QLatin1String("move"));
|
QStringList args(QLatin1String("move"));
|
||||||
args << SubversionClient::addAuthenticationOptions(settings());
|
args << SubversionClient::addAuthenticationOptions(client()->settings());
|
||||||
args << QDir::toNativeSeparators(from) << QDir::toNativeSeparators(to);
|
args << QDir::toNativeSeparators(from) << QDir::toNativeSeparators(to);
|
||||||
const SubversionResponse response
|
const SubversionResponse response
|
||||||
= runSvn(workingDir, args, m_client->vcsTimeout() * 1000,
|
= runSvn(workingDir, args, m_client->vcsTimeout() * 1000,
|
||||||
@@ -1093,7 +1085,7 @@ bool SubversionPlugin::managesFile(const QString &workingDirectory, const QStrin
|
|||||||
{
|
{
|
||||||
QStringList args;
|
QStringList args;
|
||||||
args << QLatin1String("status");
|
args << QLatin1String("status");
|
||||||
args << SubversionClient::addAuthenticationOptions(settings()) << fileName;
|
args << SubversionClient::addAuthenticationOptions(client()->settings()) << fileName;
|
||||||
SubversionResponse response
|
SubversionResponse response
|
||||||
= runSvn(workingDirectory, args, m_client->vcsTimeout() * 1000, 0);
|
= runSvn(workingDirectory, args, m_client->vcsTimeout() * 1000, 0);
|
||||||
return response.stdOut.isEmpty() || response.stdOut.at(0) != QLatin1Char('?');
|
return response.stdOut.isEmpty() || response.stdOut.at(0) != QLatin1Char('?');
|
||||||
|
@@ -75,10 +75,9 @@ public:
|
|||||||
|
|
||||||
bool initialize(const QStringList &arguments, QString *errorMessage);
|
bool initialize(const QStringList &arguments, QString *errorMessage);
|
||||||
|
|
||||||
SubversionSubmitEditor *openSubversionSubmitEditor(const QString &fileName);
|
SubversionClient *client() const;
|
||||||
|
|
||||||
SubversionSettings settings() const;
|
SubversionSubmitEditor *openSubversionSubmitEditor(const QString &fileName);
|
||||||
void setSettings(const SubversionSettings &s);
|
|
||||||
|
|
||||||
// IVersionControl
|
// IVersionControl
|
||||||
bool vcsAdd(const QString &workingDir, const QString &fileName);
|
bool vcsAdd(const QString &workingDir, const QString &fileName);
|
||||||
@@ -150,7 +149,6 @@ private:
|
|||||||
|
|
||||||
const QStringList m_svnDirectories;
|
const QStringList m_svnDirectories;
|
||||||
|
|
||||||
SubversionSettings m_settings;
|
|
||||||
SubversionClient *m_client;
|
SubversionClient *m_client;
|
||||||
QString m_commitMessageFileName;
|
QString m_commitMessageFileName;
|
||||||
QString m_commitRepository;
|
QString m_commitRepository;
|
||||||
|
@@ -79,25 +79,66 @@ static Core::IEditor *locateEditor(const char *property, const QString &entry)
|
|||||||
|
|
||||||
namespace VcsBase {
|
namespace VcsBase {
|
||||||
|
|
||||||
|
class VcsBaseClientImplPrivate
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
VcsBaseClientImplPrivate(VcsBaseClientSettings *settings);
|
||||||
|
~VcsBaseClientImplPrivate();
|
||||||
|
|
||||||
|
VcsBaseClientSettings *m_clientSettings;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
VcsBaseClientImplPrivate::VcsBaseClientImplPrivate(VcsBaseClientSettings *settings) :
|
||||||
|
m_clientSettings(settings)
|
||||||
|
{
|
||||||
|
m_clientSettings->readSettings(Core::ICore::settings());
|
||||||
|
}
|
||||||
|
|
||||||
|
VcsBaseClientImplPrivate::~VcsBaseClientImplPrivate()
|
||||||
|
{
|
||||||
|
delete m_clientSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
VcsBaseClientImpl::VcsBaseClientImpl(VcsBaseClientSettings *settings) :
|
||||||
|
d(new VcsBaseClientImplPrivate(settings))
|
||||||
|
{
|
||||||
|
connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested,
|
||||||
|
this, &VcsBaseClientImpl::saveSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
VcsBaseClientImpl::~VcsBaseClientImpl()
|
||||||
|
{
|
||||||
|
delete d;
|
||||||
|
}
|
||||||
|
|
||||||
|
VcsBaseClientSettings &VcsBaseClientImpl::settings() const
|
||||||
|
{
|
||||||
|
return *d->m_clientSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
void VcsBaseClientImpl::saveSettings()
|
||||||
|
{
|
||||||
|
settings().writeSettings(Core::ICore::settings());
|
||||||
|
}
|
||||||
|
|
||||||
class VcsBaseClientPrivate
|
class VcsBaseClientPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VcsBaseClientPrivate(VcsBaseClient *client, VcsBaseClientSettings *settings);
|
VcsBaseClientPrivate(VcsBaseClient *client);
|
||||||
|
|
||||||
void bindCommandToEditor(VcsCommand *cmd, VcsBaseEditorWidget *editor);
|
void bindCommandToEditor(VcsCommand *cmd, VcsBaseEditorWidget *editor);
|
||||||
|
|
||||||
VcsBaseEditorParameterWidget *createDiffEditor();
|
VcsBaseEditorParameterWidget *createDiffEditor();
|
||||||
VcsBaseEditorParameterWidget *createLogEditor();
|
VcsBaseEditorParameterWidget *createLogEditor();
|
||||||
|
|
||||||
VcsBaseClientSettings *m_clientSettings;
|
|
||||||
QSignalMapper *m_cmdFinishedMapper;
|
QSignalMapper *m_cmdFinishedMapper;
|
||||||
|
|
||||||
VcsBaseClient::ParameterWidgetCreator m_diffParamWidgetCreator;
|
VcsBaseClient::ParameterWidgetCreator m_diffParamWidgetCreator;
|
||||||
VcsBaseClient::ParameterWidgetCreator m_logParamWidgetCreator;
|
VcsBaseClient::ParameterWidgetCreator m_logParamWidgetCreator;
|
||||||
};
|
};
|
||||||
|
|
||||||
VcsBaseClientPrivate::VcsBaseClientPrivate(VcsBaseClient *client, VcsBaseClientSettings *settings) :
|
VcsBaseClientPrivate::VcsBaseClientPrivate(VcsBaseClient *client) :
|
||||||
m_clientSettings(settings),
|
|
||||||
m_cmdFinishedMapper(new QSignalMapper(client))
|
m_cmdFinishedMapper(new QSignalMapper(client))
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@@ -124,11 +165,10 @@ VcsBaseClient::StatusItem::StatusItem(const QString &s, const QString &f) :
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
VcsBaseClient::VcsBaseClient(VcsBaseClientSettings *settings) :
|
VcsBaseClient::VcsBaseClient(VcsBaseClientSettings *settings) :
|
||||||
d(new VcsBaseClientPrivate(this, settings))
|
VcsBaseClientImpl(settings),
|
||||||
|
d(new VcsBaseClientPrivate(this))
|
||||||
{
|
{
|
||||||
qRegisterMetaType<QVariant>();
|
qRegisterMetaType<QVariant>();
|
||||||
connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested,
|
|
||||||
this, &VcsBaseClient::saveSettings);
|
|
||||||
connect(d->m_cmdFinishedMapper, static_cast<void (QSignalMapper::*)(QWidget*)>(&QSignalMapper::mapped),
|
connect(d->m_cmdFinishedMapper, static_cast<void (QSignalMapper::*)(QWidget*)>(&QSignalMapper::mapped),
|
||||||
this, &VcsBaseClient::commandFinishedGotoLine);
|
this, &VcsBaseClient::commandFinishedGotoLine);
|
||||||
}
|
}
|
||||||
@@ -495,11 +535,6 @@ void VcsBaseClient::commit(const QString &repositoryRoot,
|
|||||||
enqueueJob(cmd, args);
|
enqueueJob(cmd, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
VcsBaseClientSettings *VcsBaseClient::settings() const
|
|
||||||
{
|
|
||||||
return d->m_clientSettings;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString VcsBaseClient::vcsEditorTitle(const QString &vcsCmd, const QString &sourceId) const
|
QString VcsBaseClient::vcsEditorTitle(const QString &vcsCmd, const QString &sourceId) const
|
||||||
{
|
{
|
||||||
return vcsBinary().toFileInfo().baseName() +
|
return vcsBinary().toFileInfo().baseName() +
|
||||||
@@ -577,12 +612,12 @@ void VcsBaseClient::resetCachedVcsInfo(const QString &workingDir)
|
|||||||
|
|
||||||
Utils::FileName VcsBaseClient::vcsBinary() const
|
Utils::FileName VcsBaseClient::vcsBinary() const
|
||||||
{
|
{
|
||||||
return d->m_clientSettings->binaryPath();
|
return settings().binaryPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
int VcsBaseClient::vcsTimeout() const
|
int VcsBaseClient::vcsTimeout() const
|
||||||
{
|
{
|
||||||
return d->m_clientSettings->intValue(VcsBaseClientSettings::timeoutKey);
|
return settings().intValue(VcsBaseClientSettings::timeoutKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VcsBaseClient::statusParser(const QString &text)
|
void VcsBaseClient::statusParser(const QString &text)
|
||||||
@@ -612,11 +647,6 @@ void VcsBaseClient::annotateRevision(const QString &workingDirectory, const QSt
|
|||||||
annotate(workingDirectory, file, changeCopy, lineNumber);
|
annotate(workingDirectory, file, changeCopy, lineNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VcsBaseClient::saveSettings()
|
|
||||||
{
|
|
||||||
settings()->writeSettings(Core::ICore::settings());
|
|
||||||
}
|
|
||||||
|
|
||||||
void VcsBaseClient::commandFinishedGotoLine(QWidget *editorObject)
|
void VcsBaseClient::commandFinishedGotoLine(QWidget *editorObject)
|
||||||
{
|
{
|
||||||
VcsBaseEditorWidget *editor = qobject_cast<VcsBaseEditorWidget *>(editorObject);
|
VcsBaseEditorWidget *editor = qobject_cast<VcsBaseEditorWidget *>(editorObject);
|
||||||
|
@@ -59,6 +59,7 @@ class VcsCommand;
|
|||||||
class VcsBaseEditorWidget;
|
class VcsBaseEditorWidget;
|
||||||
class VcsBaseClientSettings;
|
class VcsBaseClientSettings;
|
||||||
class VcsJob;
|
class VcsJob;
|
||||||
|
class VcsBaseClientImplPrivate;
|
||||||
class VcsBaseClientPrivate;
|
class VcsBaseClientPrivate;
|
||||||
class VcsBaseEditorParameterWidget;
|
class VcsBaseEditorParameterWidget;
|
||||||
|
|
||||||
@@ -67,6 +68,15 @@ class VCSBASE_EXPORT VcsBaseClientImpl : public QObject
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
explicit VcsBaseClientImpl(VcsBaseClientSettings *settings);
|
||||||
|
~VcsBaseClientImpl();
|
||||||
|
|
||||||
|
VcsBaseClientSettings &settings() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void saveSettings();
|
||||||
|
|
||||||
|
VcsBaseClientImplPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
class VCSBASE_EXPORT VcsBaseClient : public VcsBaseClientImpl
|
class VCSBASE_EXPORT VcsBaseClient : public VcsBaseClientImpl
|
||||||
@@ -131,7 +141,6 @@ public:
|
|||||||
|
|
||||||
virtual QString findTopLevelForFile(const QFileInfo &file) const = 0;
|
virtual QString findTopLevelForFile(const QFileInfo &file) const = 0;
|
||||||
|
|
||||||
virtual VcsBaseClientSettings *settings() const;
|
|
||||||
virtual QProcessEnvironment processEnvironment() const;
|
virtual QProcessEnvironment processEnvironment() const;
|
||||||
|
|
||||||
Utils::FileName vcsBinary() const;
|
Utils::FileName vcsBinary() const;
|
||||||
@@ -207,7 +216,6 @@ protected:
|
|||||||
private:
|
private:
|
||||||
void statusParser(const QString&);
|
void statusParser(const QString&);
|
||||||
void annotateRevision(const QString&, const QString&, const QString&, int);
|
void annotateRevision(const QString&, const QString&, const QString&, int);
|
||||||
void saveSettings();
|
|
||||||
void commandFinishedGotoLine(QWidget*);
|
void commandFinishedGotoLine(QWidget*);
|
||||||
|
|
||||||
friend class VcsBaseClientPrivate;
|
friend class VcsBaseClientPrivate;
|
||||||
|
Reference in New Issue
Block a user