diff --git a/src/plugins/bazaar/bazaarclient.cpp b/src/plugins/bazaar/bazaarclient.cpp index 3f7d29205390c99905193101fd1e1d8da9704bde..e45f0b4f3741156baf2012aed7fdebde6235fbbc 100644 --- a/src/plugins/bazaar/bazaarclient.cpp +++ b/src/plugins/bazaar/bazaarclient.cpp @@ -34,6 +34,7 @@ #include "bazaarclient.h" #include "constants.h" +#include <vcsbase/vcsbaseclientsettings.h> #include <vcsbase/vcsbaseplugin.h> #include <QtCore/QDir> @@ -74,6 +75,15 @@ BazaarClient::BazaarClient(const VCSBase::VCSBaseClientSettings &settings) : { } +bool BazaarClient::synchronousSetUserId() +{ + QStringList args; + args << QLatin1String("whoami") + << QString("%1 <%2>").arg(settings().userName()).arg(settings().email()); + QByteArray stdOut; + return vcsFullySynchronousExec(QDir::currentPath(), args, &stdOut); +} + BranchInfo BazaarClient::synchronousBranchQuery(const QString &repositoryRoot) const { QFile branchConfFile(repositoryRoot + QDir::separator() + diff --git a/src/plugins/bazaar/bazaarclient.h b/src/plugins/bazaar/bazaarclient.h index 93133f98fb60d2e8bccc020eef8c5a200a5be596..e1118b3a814754a6106c76f7aa22d35dbde867ee 100644 --- a/src/plugins/bazaar/bazaarclient.h +++ b/src/plugins/bazaar/bazaarclient.h @@ -71,6 +71,7 @@ public: BazaarClient(const VCSBase::VCSBaseClientSettings &settings); + bool synchronousSetUserId(); BranchInfo synchronousBranchQuery(const QString &repositoryRoot) const; virtual QString findTopLevelForFile(const QFileInfo &file) const; diff --git a/src/plugins/bazaar/bazaarplugin.cpp b/src/plugins/bazaar/bazaarplugin.cpp index cf4680dd7548f4cdb3d3888343f54845ed531d2e..e0cb34f666b3056663e03b07236c28a02509071e 100644 --- a/src/plugins/bazaar/bazaarplugin.cpp +++ b/src/plugins/bazaar/bazaarplugin.cpp @@ -205,7 +205,10 @@ const BazaarSettings &BazaarPlugin::settings() const void BazaarPlugin::setSettings(const BazaarSettings &settings) { if (settings != m_bazaarSettings) { - m_bazaarSettings = settings; + const bool userIdChanged = !m_bazaarSettings.sameUserId(settings); + m_bazaarSettings = settings; + if (userIdChanged) + client()->synchronousSetUserId(); } } diff --git a/src/plugins/bazaar/bazaarsettings.cpp b/src/plugins/bazaar/bazaarsettings.cpp index e105f4b3fb8422f0f1bdde80066a1733dce28d7b..0027e62a1fb19d528bc89206ac91c454e0f286dd 100644 --- a/src/plugins/bazaar/bazaarsettings.cpp +++ b/src/plugins/bazaar/bazaarsettings.cpp @@ -48,5 +48,10 @@ BazaarSettings& BazaarSettings::operator=(const BazaarSettings& other) return *this; } +bool BazaarSettings::sameUserId(const BazaarSettings& other) const +{ + return userName() == other.userName() && email() == other.email(); +} + } // namespace Internal } // namespace Bazaar diff --git a/src/plugins/bazaar/bazaarsettings.h b/src/plugins/bazaar/bazaarsettings.h index a683b34465b58c085eb9c363318caa250fe8a2c5..58cd6a359c88882a6ec4627d6d797a50cbc03d95 100644 --- a/src/plugins/bazaar/bazaarsettings.h +++ b/src/plugins/bazaar/bazaarsettings.h @@ -44,6 +44,7 @@ class BazaarSettings : public VCSBase::VCSBaseClientSettings public: BazaarSettings(); BazaarSettings& operator=(const BazaarSettings& other); + bool sameUserId(const BazaarSettings& other) const; }; } // namespace Internal diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index edc48f7e88b014a5a376c5c2b4e895b7c2a85389..496c86ff3d07b55385a258ec57af60cde631718c 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -427,6 +427,11 @@ void VCSBaseClient::commit(const QString &repositoryRoot, enqueueJob(job); } +const VCSBaseClientSettings &VCSBaseClient::settings() const +{ + return d->m_clientSettings; +} + void VCSBaseClient::settingsChanged() { if (d->m_jobManager) { diff --git a/src/plugins/vcsbase/vcsbaseclient.h b/src/plugins/vcsbase/vcsbaseclient.h index e20b32c82b2eaef1e1d1cec7738cf44300b6fef7..a9ef78eb7c67a75a476f67614dbc5ac7147a6cdf 100644 --- a/src/plugins/vcsbase/vcsbaseclient.h +++ b/src/plugins/vcsbase/vcsbaseclient.h @@ -105,6 +105,8 @@ public: virtual QString findTopLevelForFile(const QFileInfo &file) const = 0; + const VCSBaseClientSettings &settings() const; + signals: void parsedStatus(const QList<QPair<QString, QString> > &statusList); // Passes on changed signals from VCSJob to Control