From 7c7ccdc764629042729ceede4ca3e47b464aee42 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Fri, 25 May 2012 09:19:15 +0200
Subject: [PATCH] Gerrit: Do not run plink executable in accessor of
 OptionsWidget.

Do not run the process every time the user presses 'Ok' or 'Apply'
in the settings page, do it only if the gerrit parameters actually
changed. Also check for empty binary.

Change-Id: I934616e5d9b20404278f1fd9fc751ff161030cd8
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
---
 src/plugins/git/gerrit/gerritoptionspage.cpp | 2 +-
 src/plugins/git/gerrit/gerritparameters.cpp  | 9 ++++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/plugins/git/gerrit/gerritoptionspage.cpp b/src/plugins/git/gerrit/gerritoptionspage.cpp
index 54d0451d200..50466e695da 100644
--- a/src/plugins/git/gerrit/gerritoptionspage.cpp
+++ b/src/plugins/git/gerrit/gerritoptionspage.cpp
@@ -73,6 +73,7 @@ void GerritOptionsPage::apply()
         const GerritParameters newParameters = w->parameters();
         if (newParameters != *m_parameters) {
             *m_parameters = newParameters;
+            m_parameters->setPortFlagBySshType();
             m_parameters->toSettings(Core::ICore::instance()->settings());
         }
     }
@@ -124,7 +125,6 @@ GerritParameters GerritOptionsWidget::parameters() const
     result.port = m_portSpinBox->value();
     result.additionalQueries = m_additionalQueriesLineEdit->text().trimmed();
     result.https = m_httpsCheckBox->isChecked();
-    result.setPortFlagBySshType();
     return result;
 }
 
diff --git a/src/plugins/git/gerrit/gerritparameters.cpp b/src/plugins/git/gerrit/gerritparameters.cpp
index 2ab0b787c2a..7286e6b5797 100644
--- a/src/plugins/git/gerrit/gerritparameters.cpp
+++ b/src/plugins/git/gerrit/gerritparameters.cpp
@@ -89,9 +89,12 @@ static inline QString detectSsh()
 
 void GerritParameters::setPortFlagBySshType()
 {
-    const QString version = Utils::PathChooser::toolVersion(ssh, QStringList(QLatin1String("-V")));
-    portFlag = (version.contains(QLatin1String("plink"), Qt::CaseInsensitive)) ?
-                QLatin1String("-P") : QLatin1String(defaultPortFlag);
+    bool isPlink = false;
+    if (!ssh.isEmpty()) {
+        const QString version = Utils::PathChooser::toolVersion(ssh, QStringList(QLatin1String("-V")));
+        isPlink = version.contains(QLatin1String("plink"), Qt::CaseInsensitive);
+    }
+    portFlag = isPlink ? QLatin1String("-P") : QLatin1String(defaultPortFlag);
 }
 
 GerritParameters::GerritParameters()
-- 
GitLab