forked from qt-creator/qt-creator
Git: Cache findGitDirForRepository results
Change-Id: Ia22ec20d3934dbdfa42461f66230b62bf6c1df07 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
committed by
Tobias Hunger
parent
1712b86e0e
commit
f782f9b901
@@ -68,6 +68,7 @@
|
|||||||
#include <QTime>
|
#include <QTime>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
#include <QHash>
|
||||||
#include <QSignalMapper>
|
#include <QSignalMapper>
|
||||||
|
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
@@ -392,11 +393,15 @@ QString GitClient::findRepositoryForDirectory(const QString &dir)
|
|||||||
|
|
||||||
QString GitClient::findGitDirForRepository(const QString &repositoryDir)
|
QString GitClient::findGitDirForRepository(const QString &repositoryDir)
|
||||||
{
|
{
|
||||||
|
static QHash<QString, QString> repoDirCache;
|
||||||
|
QString &res = repoDirCache[repositoryDir];
|
||||||
|
if (!res.isEmpty())
|
||||||
|
return res;
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("rev-parse") << QLatin1String("--git-dir");
|
arguments << QLatin1String("rev-parse") << QLatin1String("--git-dir");
|
||||||
fullySynchronousGit(repositoryDir, arguments, &outputText, 0, false);
|
fullySynchronousGit(repositoryDir, arguments, &outputText, 0, false);
|
||||||
QString res = QString::fromLocal8Bit(outputText.trimmed());
|
res = QString::fromLocal8Bit(outputText.trimmed());
|
||||||
if (!QDir(res).isAbsolute())
|
if (!QDir(res).isAbsolute())
|
||||||
res.prepend(repositoryDir + QLatin1Char('/'));
|
res.prepend(repositoryDir + QLatin1Char('/'));
|
||||||
return res;
|
return res;
|
||||||
|
|||||||
Reference in New Issue
Block a user