diff --git a/src/plugins/vcsbase/vcsbaseoutputwindow.cpp b/src/plugins/vcsbase/vcsbaseoutputwindow.cpp
index 3ec044e271dcd5f8edd2f3981de9651ead832c3a..94b5d645f0a0f214a7a65085ef94e6e41c84ad8d 100644
--- a/src/plugins/vcsbase/vcsbaseoutputwindow.cpp
+++ b/src/plugins/vcsbase/vcsbaseoutputwindow.cpp
@@ -272,6 +272,7 @@ public:
 
     QPointer<Internal::OutputWindowPlainTextEdit> m_plainTextEdit;
     QString repository;
+    QRegExp passwordRegExp;
 };
 
 // Create log editor on demand. Some errors might be logged
@@ -289,9 +290,25 @@ VcsBaseOutputWindow *VcsBaseOutputWindowPrivate::instance = 0;
 VcsBaseOutputWindow::VcsBaseOutputWindow() :
     d(new VcsBaseOutputWindowPrivate)
 {
+    d->passwordRegExp = QRegExp(QLatin1String("://([^@:]+):([^@]+)@"));
+    Q_ASSERT(d->passwordRegExp.isValid());
     VcsBaseOutputWindowPrivate::instance = this;
 }
 
+QString VcsBaseOutputWindow::filterPasswordFromUrls(const QString &input)
+{
+    int pos = 0;
+    QString result = input;
+    while ((pos = d->passwordRegExp.indexIn(result, pos)) >= 0) {
+        QString tmp = result.left(pos + 3) + d->passwordRegExp.cap(1) + QLatin1String(":***@");
+        int newStart = tmp.count();
+        tmp += result.mid(pos + d->passwordRegExp.matchedLength());
+        result = tmp;
+        pos = newStart;
+    }
+    return result;
+}
+
 VcsBaseOutputWindow::~VcsBaseOutputWindow()
 {
     VcsBaseOutputWindowPrivate::instance = 0;
@@ -443,7 +460,7 @@ QString VcsBaseOutputWindow::msgExecutionLogEntry(const QString &workingDir,
 
 void VcsBaseOutputWindow::appendCommand(const QString &text)
 {
-    append(text, Command, true);
+    append(filterPasswordFromUrls(text), Command, true);
 }
 
 void VcsBaseOutputWindow::appendCommand(const QString &workingDirectory,
diff --git a/src/plugins/vcsbase/vcsbaseoutputwindow.h b/src/plugins/vcsbase/vcsbaseoutputwindow.h
index 6e52b7aebd8ab3383628e80ec47c36f632e4386b..84fa6999bb79c6bec38892e55f3215189823dd43 100644
--- a/src/plugins/vcsbase/vcsbaseoutputwindow.h
+++ b/src/plugins/vcsbase/vcsbaseoutputwindow.h
@@ -121,6 +121,8 @@ public slots:
 private:
     VcsBaseOutputWindow();
 
+    QString filterPasswordFromUrls(const QString &input);
+
     VcsBaseOutputWindowPrivate *d;
 };