From 455a85bd861edab91dea9d03765187154329e208 Mon Sep 17 00:00:00 2001 From: cerf <delorme.hugues@gmail.com> Date: Tue, 15 Mar 2011 15:47:45 +0100 Subject: [PATCH] Bazaar: set global Bazaar user ID when changed This ID is automatically set when the user settings have been changed and applied from the "Options" dialog. This calls 'bzr whoami' under the hood Merge-request: 275 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com> --- src/plugins/bazaar/bazaarclient.cpp | 10 ++++++++++ src/plugins/bazaar/bazaarclient.h | 1 + src/plugins/bazaar/bazaarplugin.cpp | 5 ++++- src/plugins/bazaar/bazaarsettings.cpp | 5 +++++ src/plugins/bazaar/bazaarsettings.h | 1 + src/plugins/vcsbase/vcsbaseclient.cpp | 5 +++++ src/plugins/vcsbase/vcsbaseclient.h | 2 ++ 7 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/plugins/bazaar/bazaarclient.cpp b/src/plugins/bazaar/bazaarclient.cpp index 3f7d2920539..e45f0b4f374 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 93133f98fb6..e1118b3a814 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 cf4680dd754..e0cb34f666b 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 e105f4b3fb8..0027e62a1fb 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 a683b34465b..58cd6a359c8 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 edc48f7e88b..496c86ff3d0 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 e20b32c82b2..a9ef78eb7c6 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 -- GitLab