Git: Cache findGitDirForRepository results

Change-Id: Ia22ec20d3934dbdfa42461f66230b62bf6c1df07
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Orgad Shaneh
2012-11-29 22:12:04 +02:00
committed by Tobias Hunger
parent 1712b86e0e
commit f782f9b901

View File

@@ -68,6 +68,7 @@
#include <QTime>
#include <QFileInfo>
#include <QDir>
#include <QHash>
#include <QSignalMapper>
#include <QComboBox>
@@ -392,11 +393,15 @@ QString GitClient::findRepositoryForDirectory(const QString &dir)
QString GitClient::findGitDirForRepository(const QString &repositoryDir)
{
static QHash<QString, QString> repoDirCache;
QString &res = repoDirCache[repositoryDir];
if (!res.isEmpty())
return res;
QByteArray outputText;
QStringList arguments;
arguments << QLatin1String("rev-parse") << QLatin1String("--git-dir");
fullySynchronousGit(repositoryDir, arguments, &outputText, 0, false);
QString res = QString::fromLocal8Bit(outputText.trimmed());
res = QString::fromLocal8Bit(outputText.trimmed());
if (!QDir(res).isAbsolute())
res.prepend(repositoryDir + QLatin1Char('/'));
return res;