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