diff --git a/src/plugins/mercurial/srcdestdialog.cpp b/src/plugins/mercurial/srcdestdialog.cpp
index 7ca905654576af53ad0de2827e56aabb261451aa..2a55fdd9fad85561bd895e31e8347003eb527c41 100644
--- a/src/plugins/mercurial/srcdestdialog.cpp
+++ b/src/plugins/mercurial/srcdestdialog.cpp
@@ -29,8 +29,13 @@
 
 #include "srcdestdialog.h"
 #include "ui_srcdestdialog.h"
+#include "mercurialplugin.h"
 
+#include <QInputDialog>
+#include <QSettings>
+#include <QUrl>
 
+using namespace VcsBase;
 using namespace Mercurial::Internal;
 
 SrcDestDialog::SrcDestDialog(QWidget *parent) :
@@ -39,6 +44,13 @@ SrcDestDialog::SrcDestDialog(QWidget *parent) :
 {
     m_ui->setupUi(this);
     m_ui->localPathChooser->setExpectedKind(Utils::PathChooser::ExistingDirectory);
+    QUrl repoUrl(getRepoUrl());
+    if (repoUrl.isEmpty())
+        return;
+    if (!repoUrl.password().isEmpty())
+        repoUrl.setPassword(QLatin1String("***"));
+    m_ui->defaultPath->setText(repoUrl.toString());
+    m_ui->promptForCredentials->setChecked(!repoUrl.scheme().isEmpty() && repoUrl.scheme() != QLatin1String("file"));
 }
 
 SrcDestDialog::~SrcDestDialog()
@@ -53,9 +65,32 @@ void SrcDestDialog::setPathChooserKind(Utils::PathChooser::Kind kind)
 
 QString SrcDestDialog::getRepositoryString() const
 {
-    if (m_ui->defaultButton->isChecked())
-        return QString();
+    if (m_ui->defaultButton->isChecked()) {
+        QUrl repoUrl(getRepoUrl());
+        if (m_ui->promptForCredentials && (repoUrl.userName().isEmpty() || repoUrl.password().isEmpty())) {
+            if (repoUrl.userName().isEmpty()) {
+                QString user = QInputDialog::getText(0, tr("Enter user name"), tr("User name:"));
+                if (user.isEmpty())
+                    return repoUrl.toString();
+                repoUrl.setUserName(user);
+            }
+            if (repoUrl.password().isEmpty()) {
+                QString password = QInputDialog::getText(0, tr("Enter password"), tr("Password:"), QLineEdit::Password);
+                if (!password.isEmpty())
+                    repoUrl.setPassword(password);
+            }
+        }
+        return repoUrl.toString();
+    }
     if (m_ui->localButton->isChecked())
         return m_ui->localPathChooser->path();
     return m_ui->urlLineEdit->text();
 }
+
+QUrl SrcDestDialog::getRepoUrl() const
+{
+    MercurialPlugin *plugin = MercurialPlugin::instance();
+    const VcsBasePluginState state = plugin->currentState();
+    QSettings settings(QString(QLatin1String("%1/.hg/hgrc")).arg(state.currentProjectPath()), QSettings::IniFormat);
+    return settings.value(QLatin1String("paths/default")).toUrl();
+}
diff --git a/src/plugins/mercurial/srcdestdialog.h b/src/plugins/mercurial/srcdestdialog.h
index ffe42d04229925bf70517b8849bfca97ac68d752..0bcdf21a647a06748a342546777bcf9109fde65d 100644
--- a/src/plugins/mercurial/srcdestdialog.h
+++ b/src/plugins/mercurial/srcdestdialog.h
@@ -49,6 +49,9 @@ public:
     void setPathChooserKind(Utils::PathChooser::Kind kind);
     QString getRepositoryString() const;
 
+private:
+    QUrl getRepoUrl() const;
+
 private:
     Ui::SrcDestDialog *m_ui;
 };
diff --git a/src/plugins/mercurial/srcdestdialog.ui b/src/plugins/mercurial/srcdestdialog.ui
index c32ba1c127d8178052e1f85719004c25611c116e..3d20f31f68ce507c610ec197b59d0cf02a6554f2 100644
--- a/src/plugins/mercurial/srcdestdialog.ui
+++ b/src/plugins/mercurial/srcdestdialog.ui
@@ -60,6 +60,24 @@
        </property>
       </widget>
      </item>
+     <item row="0" column="1">
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <widget class="QLabel" name="defaultPath">
+         <property name="text">
+          <string/>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="promptForCredentials">
+         <property name="text">
+          <string>Prompt for credentials</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
     </layout>
    </item>
    <item>