Git: Fix binary lookup with path setting

Task-number: QTCREATORBUG-7889

Change-Id: I251ef68e8dbb0a70565708053e368db89d5999e5
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Orgad Shaneh
2012-09-27 11:25:58 +02:00
committed by Tobias Hunger
parent 6c436988ff
commit 69e022d112
4 changed files with 20 additions and 32 deletions

View File

@@ -31,6 +31,7 @@
#include "vcsbaseclientsettings.h"
#include <utils/environment.h>
#include <utils/synchronousprocess.h>
#include <QSettings>
@@ -175,7 +176,7 @@ public:
QHash<QString, SettingValue> m_valueHash;
QVariantHash m_defaultValueHash;
QString m_settingsGroup;
QString m_binaryFullPath;
mutable QString m_binaryFullPath;
};
} // namespace Internal
@@ -194,6 +195,7 @@ const QLatin1String VcsBaseClientSettings::userEmailKey("UserEmail");
const QLatin1String VcsBaseClientSettings::logCountKey("LogCount");
const QLatin1String VcsBaseClientSettings::promptOnSubmitKey("PromptOnSubmit");
const QLatin1String VcsBaseClientSettings::timeoutKey("Timeout");
const QLatin1String VcsBaseClientSettings::pathKey("Path");
VcsBaseClientSettings::VcsBaseClientSettings() :
d(new Internal::VcsBaseClientSettingsPrivate)
@@ -204,6 +206,7 @@ VcsBaseClientSettings::VcsBaseClientSettings() :
declareKey(logCountKey, 100);
declareKey(promptOnSubmitKey, true);
declareKey(timeoutKey, 30);
declareKey(pathKey, QString());
}
VcsBaseClientSettings::VcsBaseClientSettings(const VcsBaseClientSettings &other) :
@@ -332,8 +335,7 @@ void VcsBaseClientSettings::setValue(const QString &key, const QVariant &v)
{
if (SettingValue::isUsableVariantType(valueType(key))) {
d->m_valueHash.insert(key, SettingValue(v));
if (key == binaryPathKey)
d->m_binaryFullPath = Utils::Environment::systemEnvironment().searchInPath(v.toString());
d->m_binaryFullPath.clear();
}
}
@@ -346,6 +348,11 @@ QVariant::Type VcsBaseClientSettings::valueType(const QString &key) const
QString VcsBaseClientSettings::binaryPath() const
{
if (d->m_binaryFullPath.isEmpty()) {
d->m_binaryFullPath = Utils::Environment::systemEnvironment().searchInPath(
stringValue(binaryPathKey), stringValue(pathKey).split(
Utils::SynchronousProcess::pathSeparator()));
}
return d->m_binaryFullPath;
}