diff --git a/src/libs/utils/synchronousprocess.cpp b/src/libs/utils/synchronousprocess.cpp
index 77a90f9d12a9e8e70b80feb64ac5fdb68bd1ff09..31abaa6cfc0c41ef43edfeb5443d78b5b36ca673 100644
--- a/src/libs/utils/synchronousprocess.cpp
+++ b/src/libs/utils/synchronousprocess.cpp
@@ -38,6 +38,8 @@
 
 #include <QtGui/QApplication>
 
+#include <limits.h>
+
 enum { debug = 0 };
 
 enum { defaultMaxHangTimerCount = 10 };
@@ -167,12 +169,16 @@ SynchronousProcess::~SynchronousProcess()
 
 void SynchronousProcess::setTimeout(int timeoutMS)
 {
-    m_d->m_maxHangTimerCount = qMax(2, timeoutMS / 1000);
+    if (timeoutMS >= 0) {
+        m_d->m_maxHangTimerCount = qMax(2, timeoutMS / 1000);
+    } else {
+        m_d->m_maxHangTimerCount = INT_MAX;
+    }
 }
 
 int SynchronousProcess::timeout() const
 {
-    return 1000 * m_d->m_maxHangTimerCount;
+    return m_d->m_maxHangTimerCount == INT_MAX ? -1 : 1000 * m_d->m_maxHangTimerCount;
 }
 
 void SynchronousProcess::setStdOutCodec(QTextCodec *c)
diff --git a/src/plugins/vcsbase/basecheckoutwizard.h b/src/plugins/vcsbase/basecheckoutwizard.h
index a8091b2002401b219c84594516668030842b682b..51ea090caf1f57f2df1abd1ab0ecfde37aaa3cb2 100644
--- a/src/plugins/vcsbase/basecheckoutwizard.h
+++ b/src/plugins/vcsbase/basecheckoutwizard.h
@@ -73,6 +73,8 @@ public:
 
     virtual QStringList runWizard(const QString &path, QWidget *parent);
 
+    static QString openProject(const QString &path, QString *errorMessage);
+
 protected:
     virtual QWizardPage *createParameterPage(const QString &path) = 0;
     virtual QSharedPointer<AbstractCheckoutJob> createJob(const QWizardPage *parameterPage,
@@ -82,8 +84,6 @@ private slots:
     void slotProgressPageShown();
 
 private:
-    QString openProject(const QString &path, QString *errorMessage);
-
     BaseCheckoutWizardPrivate *d;
 };