diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp
index b45deb226f9a970d7b1cbcb8f859b33e5af4194f..f1b21a4de6d1fd5dfaab71f086b1c4f1ea329f12 100644
--- a/src/plugins/cvs/cvsplugin.cpp
+++ b/src/plugins/cvs/cvsplugin.cpp
@@ -398,10 +398,6 @@ bool CVSPlugin::initialize(const QStringList & /*arguments */, QString *errorMes
     return true;
 }
 
-void CVSPlugin::extensionsInitialized()
-{
-}
-
 bool CVSPlugin::submitEditorAboutToClose(VCSBase::VCSBaseSubmitEditor *submitEditor)
 {
     if (!isCommitEditorOpen())
diff --git a/src/plugins/cvs/cvsplugin.h b/src/plugins/cvs/cvsplugin.h
index 12a1ee674f3ce431fba3bc572da43731fba4b8b2..1548729dff11016524e3278650d2be5c54d81bad 100644
--- a/src/plugins/cvs/cvsplugin.h
+++ b/src/plugins/cvs/cvsplugin.h
@@ -84,7 +84,6 @@ public:
     ~CVSPlugin();
 
     virtual bool initialize(const QStringList &arguments, QString *error_message);
-    virtual void extensionsInitialized();
 
     void cvsDiff(const QString &workingDir, const QStringList &files);
 
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 56ab327b0acbfc6735f76fde20882665a825defa..c7fc2465fa962d917ed1d7872661fd4ecc974757 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -507,10 +507,6 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
     return true;
 }
 
-void GitPlugin::extensionsInitialized()
-{
-}
-
 GitVersionControl *GitPlugin::gitVersionControl() const
 {
     return static_cast<GitVersionControl *>(versionControl());
diff --git a/src/plugins/git/gitplugin.h b/src/plugins/git/gitplugin.h
index 11c691fa509e864108b994afea37f2189c96db94..676362cc6902c36fe7094363d4c4f3f86ee81ba3 100644
--- a/src/plugins/git/gitplugin.h
+++ b/src/plugins/git/gitplugin.h
@@ -91,7 +91,6 @@ public:
     static GitPlugin *instance();
 
     virtual bool initialize(const QStringList &arguments, QString *error_message);
-    virtual void extensionsInitialized();
 
     GitVersionControl *gitVersionControl() const;
 
diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp
index abba36d1dd223db7a33dd74f393ae72c2c9379ea..958e5ae058d9f6fbe1b02c348439968dd2a6b178 100644
--- a/src/plugins/mercurial/mercurialplugin.cpp
+++ b/src/plugins/mercurial/mercurialplugin.cpp
@@ -188,10 +188,6 @@ bool MercurialPlugin::initialize(const QStringList & /* arguments */, QString *
     return true;
 }
 
-void MercurialPlugin::extensionsInitialized()
-{
-}
-
 const MercurialSettings &MercurialPlugin::settings() const
 {
     return mercurialSettings;
diff --git a/src/plugins/mercurial/mercurialplugin.h b/src/plugins/mercurial/mercurialplugin.h
index b11ea076a4ace90c9b1f2b0050bd1580f3da8996..9c9d4b6a821cffdeb6fe3fd81c593d42597e27ca 100644
--- a/src/plugins/mercurial/mercurialplugin.h
+++ b/src/plugins/mercurial/mercurialplugin.h
@@ -81,7 +81,7 @@ public:
     MercurialPlugin();
     virtual ~MercurialPlugin();
     bool initialize(const QStringList &arguments, QString *error_message);
-    void extensionsInitialized();
+
     static MercurialPlugin *instance() { return m_instance; }
     MercurialClient *client() const { return m_client; }
 
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index fe3cbb5a29a8a377d3355a6cceadf2c5b4a9a081..eef5f6827b15f48b4be6eeba19e1028338743e29 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -456,6 +456,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString * e
 
 void PerforcePlugin::extensionsInitialized()
 {
+    VCSBase::VCSBasePlugin::extensionsInitialized();
     getTopLevel();
 }
 
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index bcc249ef5f84c624a8e5c32d053a806f3febc64a..b8f4971e5997818547023d69704d9b03e33fb352 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -440,10 +440,6 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e
     return true;
 }
 
-void SubversionPlugin::extensionsInitialized()
-{
-}
-
 bool SubversionPlugin::submitEditorAboutToClose(VCSBase::VCSBaseSubmitEditor *submitEditor)
 {
     if (!isCommitEditorOpen())
diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h
index 2a9283da2fa0d903a097a0ccca5ecee282fd2b09..349fe04e68b66b602a870838d7c429e81e576444 100644
--- a/src/plugins/subversion/subversionplugin.h
+++ b/src/plugins/subversion/subversionplugin.h
@@ -81,7 +81,6 @@ public:
     ~SubversionPlugin();
 
     bool initialize(const QStringList &arguments, QString *error_message);
-    void extensionsInitialized();
 
     void svnDiff(const QString  &workingDir, const QStringList &files, QString diffname = QString());
 
diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp
index 436920142f2568507d5f87765979af74ce215cfe..3c437fadd9d53152f81903229d64c87b53b541ed 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.cpp
+++ b/src/plugins/vcsbase/vcsbaseplugin.cpp
@@ -165,7 +165,7 @@ public:
 signals:
     void stateChanged(const VCSBase::Internal::State &s, Core::IVersionControl *vc);
 
-private slots:
+public slots:
     void slotStateChanged();
 };
 
@@ -465,6 +465,12 @@ void VCSBasePlugin::initialize(Core::IVersionControl *vc)
             SLOT(slotStateChanged(VCSBase::Internal::State,Core::IVersionControl*)));
 }
 
+void VCSBasePlugin::extensionsInitialized()
+{
+    // Initialize enable menus.
+    VCSBasePluginPrivate::m_listener->slotStateChanged();
+}
+
 void VCSBasePlugin::slotSubmitEditorAboutToClose(VCSBaseSubmitEditor *submitEditor, bool *result)
 {
     if (debug)
diff --git a/src/plugins/vcsbase/vcsbaseplugin.h b/src/plugins/vcsbase/vcsbaseplugin.h
index de9e8412923327fd52ad11487140bee7b3bbdd2d..9574ee71b8300ec0ee281b2625862424e8240ddc 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.h
+++ b/src/plugins/vcsbase/vcsbaseplugin.h
@@ -151,7 +151,8 @@ class VCSBASE_EXPORT VCSBasePlugin : public ExtensionSystem::IPlugin
 protected:
     explicit VCSBasePlugin(const QString &submitEditorId);
 
-    void initialize(Core::IVersionControl *vc);
+    virtual void initialize(Core::IVersionControl *vc);
+    virtual void extensionsInitialized();
 
 public:
     virtual ~VCSBasePlugin();