forked from qt-creator/qt-creator
Mercurial: Add cache for branch query
Change-Id: Ied6f2008324b80b9d4869ba17d67e6d55a91d08c Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
committed by
Orgad Shaneh
parent
cd48c5e513
commit
d9bfc67d1f
@@ -39,6 +39,7 @@
|
|||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
|
#include <QDateTime>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QTextCodec>
|
#include <QTextCodec>
|
||||||
@@ -155,10 +156,12 @@ bool MercurialClient::synchronousPull(const QString &workingDir, const QString &
|
|||||||
|
|
||||||
QString MercurialClient::branchQuerySync(const QString &repositoryRoot)
|
QString MercurialClient::branchQuerySync(const QString &repositoryRoot)
|
||||||
{
|
{
|
||||||
QByteArray output;
|
QFile branchFile(repositoryRoot + QLatin1String("/.hg/branch"));
|
||||||
if (vcsFullySynchronousExec(repositoryRoot, QStringList(QLatin1String("branch")), &output))
|
if (branchFile.open(QFile::ReadOnly)) {
|
||||||
return QTextCodec::codecForLocale()->toUnicode(output).trimmed();
|
const QByteArray branch = branchFile.readAll().trimmed();
|
||||||
|
if (!branch.isEmpty())
|
||||||
|
return QString::fromLocal8Bit(branch);
|
||||||
|
}
|
||||||
return QLatin1String("Unknown Branch");
|
return QLatin1String("Unknown Branch");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,8 @@
|
|||||||
#include <vcsbase/vcsbaseclientsettings.h>
|
#include <vcsbase/vcsbaseclientsettings.h>
|
||||||
#include <vcsbase/vcsbaseconstants.h>
|
#include <vcsbase/vcsbaseconstants.h>
|
||||||
|
|
||||||
|
#include <coreplugin/vcsmanager.h>
|
||||||
|
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
@@ -40,8 +42,29 @@
|
|||||||
|
|
||||||
using namespace Mercurial::Internal;
|
using namespace Mercurial::Internal;
|
||||||
|
|
||||||
|
class MercurialTopicCache : public Core::IVersionControl::TopicCache
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MercurialTopicCache(MercurialClient *client) : m_client(client) {}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QString trackFile(const QString &repository)
|
||||||
|
{
|
||||||
|
return repository + QLatin1String("/.hg/branch");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString refreshTopic(const QString &repository)
|
||||||
|
{
|
||||||
|
return m_client->branchQuerySync(repository);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
MercurialClient *m_client;
|
||||||
|
};
|
||||||
|
|
||||||
MercurialControl::MercurialControl(MercurialClient *client)
|
MercurialControl::MercurialControl(MercurialClient *client)
|
||||||
: mercurialClient(client)
|
: Core::IVersionControl(new MercurialTopicCache(client))
|
||||||
|
, mercurialClient(client)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,11 +159,6 @@ bool MercurialControl::vcsAnnotate(const QString &file, int line)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString MercurialControl::vcsTopic(const QString &directory)
|
|
||||||
{
|
|
||||||
return mercurialClient->branchQuerySync(directory);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool MercurialControl::sccManaged(const QString &filename)
|
bool MercurialControl::sccManaged(const QString &filename)
|
||||||
{
|
{
|
||||||
const QFileInfo fi(filename);
|
const QFileInfo fi(filename);
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ public:
|
|||||||
QString vcsGetRepositoryURL(const QString &directory);
|
QString vcsGetRepositoryURL(const QString &directory);
|
||||||
bool sccManaged(const QString &filename);
|
bool sccManaged(const QString &filename);
|
||||||
bool vcsAnnotate(const QString &file, int line);
|
bool vcsAnnotate(const QString &file, int line);
|
||||||
QString vcsTopic(const QString &directory);
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
// To be connected to the HgTask's success signal to emit the repository/
|
// To be connected to the HgTask's success signal to emit the repository/
|
||||||
|
|||||||
@@ -581,7 +581,7 @@ void MercurialPlugin::showCommitWidget(const QList<VcsBaseClient::StatusItem> &s
|
|||||||
arg(QDir::toNativeSeparators(m_submitRepository));
|
arg(QDir::toNativeSeparators(m_submitRepository));
|
||||||
commitEditor->document()->setDisplayName(msg);
|
commitEditor->document()->setDisplayName(msg);
|
||||||
|
|
||||||
QString branch = m_client->branchQuerySync(m_submitRepository);
|
QString branch = versionControl()->vcsTopic(m_submitRepository);
|
||||||
commitEditor->setFields(m_submitRepository, branch,
|
commitEditor->setFields(m_submitRepository, branch,
|
||||||
mercurialSettings.stringValue(MercurialSettings::userNameKey),
|
mercurialSettings.stringValue(MercurialSettings::userNameKey),
|
||||||
mercurialSettings.stringValue(MercurialSettings::userEmailKey), status);
|
mercurialSettings.stringValue(MercurialSettings::userEmailKey), status);
|
||||||
|
|||||||
Reference in New Issue
Block a user